javaScript 基本類型之間轉換

在Java中,基本類型之間的強制轉換也不是這樣的,好比,整數要轉換成字符串,必須使用Integer.toString()靜態方法或者String.valueOf()靜態方法,把字符串轉換爲整數,必須使用Integer.valueOf()。
可見,不能把JavaScript中的類型轉換看做爲「強制類型轉換」。
在JavaScript中,Double類型和Int類型都是看做爲Number對象,所以不管是typeof 1仍是typeof 1.0,都是返回number。這樣咱們能夠不用去管是Int仍是Double類型,讓JavaScript解釋引擎內部去處理。
javascript

  • 若是要把Number轉換成String,可使用Number的toString()方法,(象(1).toString()括號必須或者 1 .toString()空格必須,不然會編譯出錯,若是是變量則無需),或者調用String()函數,這兩種方法都會自動調用解釋引擎內部的 NumberToString(),或者根據進制調用其它函數,基本相似。
  • 若是要把String轉換成Number,可使用Number()函數,他會自動判斷String中是整數仍是浮點數,而後內部使用相應的數據 類型,另外可使用全局函數parseInt()和parseFloat(),他們根據你的要求進行轉換。一樣的,他們在解釋引擎內部機制上是使用了 StringToNumber,StringToInt等等內部的函數。
  • 而若是是Double轉換成Int,必須使用Math.floor()函數(截尾取整)或者Math.round()(四捨五入)
  • Int轉換成Double,無須考慮任何問題,直接把Int當成Double進行運算

注:Number、String函數是特殊的函數,在JS引擎中,他會自動判斷是做爲構造函數調用仍是普通調用,因此既可使用new關鍵字,也能夠做爲函數直接調用。
關於JS的參考手冊,微軟有一個CHM十分不錯,指南、API參考都有,是Windows腳本技術,中文版,我在MSDN上下載的。而關於JS解釋引擎的,我參考的是Netscape的Spidermonkey,如今由Mozilla組織維護。


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
java

< this.all.length;i++){
   vTotal+=Number(this.all[i].Value);
   
  }


 得出是數字的累加
否則成字符串鏈接了

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

引用
javaScript支持自動類型轉換:


Java代碼   收藏代碼
  1. <script>  
  2.   
  3.     var a = "3.145";  
  4.     var b = a - 2;//將a的類型轉換成數字;  
  5.     var c = a + 2;//將a的類型轉換成字符串;  
  6.     alert (b + "\n" + c);  
  7.   
  8. </script>  


引用
JavaScript還提供幾個支持強制類型轉換的函數。


  • toString():將布爾值、數字等轉換成字符串。
  • parseInt():將字符串、布爾值等轉換成整數。
  • parseFloat():將字符串、布爾值等轉換成浮點數。
  • eval():將字符串表達式轉換成數字值。例如,語句total=eval("432.1*10")的結果是total=4321即將數值4321賦予total變量。



Java代碼   收藏代碼
  1. <script>  
  2.   
  3.     var a = "3.145";  
  4.     var b = a + 2;  
  5.     var c = parseFloat(a) + 2;  
  6.     alert (b + "\n" + c);  
  7.   
  8. </script>  



引用
各類類型向數字轉換的結果以下:


  • undefined值:轉換成NaN。
  • null值:轉換成0.
  • 布爾值:值爲true,轉換成1;值爲false,轉換成0.
  • 字符串值:若是字符串是數字形式,轉換成數字,不然轉換成NaN。
  • 其餘對象:轉換成NaN.



引用
各類類型向字符串轉換的結果以下:
  • undefined值:轉換成"undefined"。
  • null值:轉換成"null".
  • 布爾值:值爲true,轉換成"true";值爲false,轉換成"false".
  • 數字型值:NaN或數字型變量的完整字符串。
  • 其餘對象:若是該對象的toString()方法存在,則返回toString方法的返回值,不然返回undefined.



引用
各類類型向布爾型轉換的結果以下:
  • undefined值:轉換成"false。
  • null值:轉換成false。
  • 字符串值:若是字符串爲空字符串,返回false;不然返回true。
  • 數字型值:若是數字爲0或NaN,返回false。;不然返回true。
  • 其餘對象:老是返回true;

在Java中,基本類型之間的強制轉換也不是這樣的,好比,整數要轉換成字符串,必須使用Integer.toString()靜態方法或者String.valueOf()靜態方法,把字符串轉換爲整數,必須使用Integer.valueOf()。
可見,不能把JavaScript中的類型轉換看做爲「強制類型轉換」。
在JavaScript中,Double類型和Int類型都是看做爲Number對象,所以不管是typeof 1仍是typeof 1.0,都是返回number。這樣咱們能夠不用去管是Int仍是Double類型,讓JavaScript解釋引擎內部去處理。
spa

  • 若是要把Number轉換成String,可使用Number的toString()方法,(象(1).toString()括號必須或者 1 .toString()空格必須,不然會編譯出錯,若是是變量則無需),或者調用String()函數,這兩種方法都會自動調用解釋引擎內部的 NumberToString(),或者根據進制調用其它函數,基本相似。
  • 若是要把String轉換成Number,可使用Number()函數,他會自動判斷String中是整數仍是浮點數,而後內部使用相應的數據 類型,另外可使用全局函數parseInt()和parseFloat(),他們根據你的要求進行轉換。一樣的,他們在解釋引擎內部機制上是使用了 StringToNumber,StringToInt等等內部的函數。
  • 而若是是Double轉換成Int,必須使用Math.floor()函數(截尾取整)或者Math.round()(四捨五入)
  • Int轉換成Double,無須考慮任何問題,直接把Int當成Double進行運算

注:Number、String函數是特殊的函數,在JS引擎中,他會自動判斷是做爲構造函數調用仍是普通調用,因此既可使用new關鍵字,也能夠做爲函數直接調用。
關於JS的參考手冊,微軟有一個CHM十分不錯,指南、API參考都有,是Windows腳本技術,中文版,我在MSDN上下載的。而關於JS解釋引擎的,我參考的是Netscape的Spidermonkey,如今由Mozilla組織維護
 
對象

< this.all.length;i++){
   vTotal+=Number(this.all[i].Value);
   
  }


 得出是數字的累加
否則成字符串鏈接了


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()來檢測這個值。

相關文章
相關標籤/搜索