3.3 變量:編程
ECMAScript 的變量是鬆散類型的,它能夠用來保存任何類型的數據,每一個變量僅僅是一個用於保存值的佔位符而已。安全
var message = 'hi';編程語言
這句代碼的意思是,將字符串‘hi’賦值給變量 message ,而不是將 message 變量標記爲字符串類型函數
3.4 數據類型:測試
因爲保存浮點數值須要的內存空間是保存整數值的兩倍,所以 ECMAScript 會不失時機地將浮點數值轉換爲整數值es5
NaN,即非數值(Not a Number)是一個特殊的數值,這個數值用於表示一個原本要返回數值的操做數未返回數值的狀況(這樣就不會拋出錯誤了)spa
例如,在其餘編程語言中,任何數值除以0都會致使錯誤,從而中止代碼執行。3d
但在 ECMAScript 中,任何數值除以0會返回 NaN ,所以不會影響其餘代碼的執行。對象
NaN 自己有兩個非同尋常的特色。首先,任何涉及 NaN 的操做(例如 NaN / 10)都會返回 NaN,這個特色在多步計算中有可能致使問題。其次,NaN 與任何值都不相等,包括 NaN 自己。blog
isNaN() 在接收到一個值以後,會嘗試將這個值轉換爲數值。某些不是數值的值會直接轉換爲數值,例如字符串「10」或Boolean值。而任何不能被轉換爲數值的值都會致使這個函數返回true。
儘管有點兒難以想象,但 isNaN() 確實也適用於對象。在基於對象調用 isNaN() 函數時,會首先調用對象的 valueOf() 方法,而後肯定該方法返回的值是否能夠轉換爲數值。若是不能,則基於這個返回值再調用 toString() 方法,再測試返回值。而這個過程也是 ECMAScript 中內置函數和操做符的通常執行流程,更詳細的內容請參見3.5節
把非數值轉換爲數值有3個函數,這三個函數對於一樣的輸入會有返回不一樣的結果
因爲 Number() 函數在轉換字符串時比較複雜並且不合理
所以在處理字符串轉數值的時候更經常使用的是 parseInt() 函數和 parseFloat() 函數
parseInt() 函數
一、該函數能夠接收兩個參數,第一個參數能夠是數字或字符串,第二個參數是基數,決定以哪一種進制去解析第一個參數
二、前綴是0的數字字面量是八進制數,前綴是0x的數字字面量是十六進制數,在使用 parseInt 函數去解析八進制的數字字面量的字符串時,es3和es5存在分歧
三、因此若是是解析八進制字面量字符串時,如‘070’,與其這樣寫 parseInt('070') 不如這樣寫 parseInt('070', 8)更安全保險,若是指定了第二個參數,第一個參數的表示進制的前綴能夠省略
四、不指定基數意味着讓 parseInt() 決定如何解析輸入的字符串,所以爲了不錯誤的解析,建議不管在什麼狀況下都明確指定基數。多數狀況下,咱們要解析的都是十進制參數,所以始終將10做爲第二個參數是很是必要的。
parseFloat函數
一、parseFloat只接收一個參數,由於它只解析十進制值,該參數能夠是數字也能夠是字符串
二、若是字符串包含的是一個能夠解析爲整數的數(沒有小數點,或者小數點後都是0),parseFloat() 會返回整數