在Java中,基本類型之間的強制轉換也不是這樣的,好比,整數要轉換成字符串,必須使用Integer.toString()靜態方法或者String.valueOf()靜態方法,把字符串轉換爲整數,必須使用Integer.valueOf()。
可見,不能把JavaScript中的類型轉換看做爲「強制類型轉換」。
在JavaScript中,Double類型和Int類型都是看做爲Number對象,所以不管是typeof 1仍是typeof 1.0,都是返回number。這樣咱們能夠不用去管是Int仍是Double類型,讓JavaScript解釋引擎內部去處理。
javascript
注:Number、String函數是特殊的函數,在JS引擎中,他會自動判斷是做爲構造函數調用仍是普通調用,因此既可使用new關鍵字,也能夠做爲函數直接調用。
關於JS的參考手冊,微軟有一個CHM十分不錯,指南、API參考都有,是Windows腳本技術,中文版,我在MSDN上下載的。而關於JS解釋引擎的,我參考的是Netscape的Spidermonkey,如今由Mozilla組織維護。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
java
得出是數字的累加
否則成字符串鏈接了
ide
衆所周知,JavaScript 是一種弱類型的腳本語言。其在聲明變量時,無須指定數據類型,這也就給予了JavaScript所須要的靈活性和簡單性。JavaScrip對數據類型的靈活處理方式的一個重要體現是自動類型轉換。今天,我就把書中的這個JavaScript數據類型自動轉換的表抄給你們。讓兄弟們作到心中有數。
函數
值 | 字符串 | 數字 | 布爾值 | 對象 |
---|---|---|---|---|
定義的值 | 「undefined」 | NaN | false | Error |
null | 「null」 | 0 | false | Error |
非空字符串 | As is | 字符串中的數字值或NaN | true | String對象 |
空字符串 | As is | 0 | false | String對象 |
0 | 「0″ | As is | false | Number對象 |
NaN | 「NaN」 | As is | false | Number對象 |
無窮大 | 「Infinity」 | As is | true | Number對象 |
負無窮大 | 「-Infinity」 | As is | true | Number對象 |
其餘全部數字 | 數字的字符串值 | As is | true | Number對象 |
True | 「true」 | 1 | As is | Boolean對象 |
false | 「false」 | 0 | As is | Boolean對象 |
對象 | toString() | valueOf()或toString()或NaN | true | As is |
簡單說明一下,這個as is 的意思應該是——和它原來的同樣。即,好比最後一行的對象,在被當作對象時,其應該沒有變化,即仍是被看成自身的對象。
this
在Java中,基本類型之間的強制轉換也不是這樣的,好比,整數要轉換成字符串,必須使用Integer.toString()靜態方法或者String.valueOf()靜態方法,把字符串轉換爲整數,必須使用Integer.valueOf()。
可見,不能把JavaScript中的類型轉換看做爲「強制類型轉換」。
在JavaScript中,Double類型和Int類型都是看做爲Number對象,所以不管是typeof 1仍是typeof 1.0,都是返回number。這樣咱們能夠不用去管是Int仍是Double類型,讓JavaScript解釋引擎內部去處理。
spa
注:Number、String函數是特殊的函數,在JS引擎中,他會自動判斷是做爲構造函數調用仍是普通調用,因此既可使用new關鍵字,也能夠做爲函數直接調用。
關於JS的參考手冊,微軟有一個CHM十分不錯,指南、API參考都有,是Windows腳本技術,中文版,我在MSDN上下載的。而關於JS解釋引擎的,我參考的是Netscape的Spidermonkey,如今由Mozilla組織維護
對象
得出是數字的累加
否則成字符串鏈接了
ip
下面的表格總結了javascript中的每一種轉換,而且針對一種特定類型的值用於特定環境中給出了所執行的轉換。ci
javascript自動數據類型轉換表字符串
值 | 字符串 | 數字 | 布爾值 | 對象 |
---|---|---|---|---|
定義的值 | 「undefined」 | NaN | false | Error |
null | 「null」 | 0 | false | Error |
非空字符串 | 不變 | 字符串中的數字值或NaN | true | String對象 |
空字符串 | 不變 | 0 | false | String對象 |
0 | 「0″ | 不變 | false | Number對象 |
NaN | 「NaN」 | 不變 | false | Number對象 |
無窮大 | 「Infinity」 | 不變 | true | Number對象 |
負無窮大 | 「-Infinity」 | 不變 | true | Number對象 |
其餘全部數字 | 數字的字符串值 | 不變 | true | Number對象 |
True | 「true」 | 1 | 不變 | Boolean對象 |
false | 「false」 | 0 | 不變 | Boolean對象 |
對象 | toString() | valueOf()或toString()或NaN | true | 不變 |
寫在這裏以備查看。
這再記錄點容易出問題的東東:
1. 雖然undefined和null值不一樣,可是 ==運算符卻將二者看做相等。看以下的表達式:
my.pro == null;//return: ture
若是屬性my.pro並不存在,或者它存在可是值爲null,那麼這個比較表達式的值爲true。因爲null和undefined都表示缺乏值,因此這種相等性正是咱們想要的。可是若是必須去人這二者,可使用===運算符或者typeof運算符。
2.NaN
當一個算數運算(如用0來除0)產生了未定義的結果或錯誤時,就會返回另外一個特殊的javascript數值。這種狀況下結果是一個非數字的特殊值,輸出爲NaN。它和任何值都不相等包括它自己,能夠用isNaN()來檢測這個值。