nan,即非數值(not a number)是乙個特殊的值,這個數值表示本來要返回數值的運算元未返回數值的情況(這樣就不會丟擲錯誤了)。比如在其他語言中
任何數值除以0都會導致錯誤而終止程式執行。但是在ecmascript中,會返回出特殊的值,因此不會影響程式的執行。
var box=0/0; //nan;
var box=12/0; //infinity;
var box=12/0*0; //nan;
可以通過number.nan得到nan的值,任何與nan進行運算的結果均會為nan,nan與自身不相等(nan不與任何值相等)。
alert(number.nan); //nan
alert(nan+1); //nan
alert(nan==nan); //false
ecmascript提供isnan()函式,用來判斷這個是不是nan。isnan()函式在接收到乙個值後,會嘗試將這個值轉換成數值。
alert(isnan(nan)); //true;
alert(isnan(25)); //false 25是個數值
alert(isnan('25')); //false '25'是乙個字串數值,可以轉換成數值
alert(isnan('lee')); //true 'lee'是個字串,不能轉化成數值
alert(isnan(true)); //false true可以轉換成1
isnan()函式也適用於物件。在呼叫 isnan()函式過程中,首先會呼叫 valueof()方法,然
後確定返回值是否能夠轉換成數值。如果不能,則基於這個返回值再呼叫 tostring()方法,
再測試返回值
var box=
};alert(isnan(box));
有三個函式可以把非數值轉換成數值:number()、parseint()和parsefloat()。number()是轉換型函式,可以用於任何資料型別,而另外兩個則
專門用於把字串轉換成數值。
alert(number(true)); //1,boolean型別的true和false分別轉換成1和0
alert(number(25)); //25,數值型別直接返回
alert(number(null)); //0,空物件返回0
alert(number(undefined));//nan,undefined返回nan
如果是字串增尋以下規則:
1、只包含數值的字串,會直接轉換成十進位制數值,如果包含前導0,即會自動去掉
alert(number('456')); //465
alert(number('070')); //70
2、只包含浮點數值的字串,會直接轉換成浮點數值,如果包含前導和後導0,即會自動去掉。
alert(number('08.50'));
3、如果字串為空,那麼直接轉換成0.
alert(number('')); //0
4、如果不是以上三種字串型別,則會返回nan。
alert(number('lee123')); //nan
5、如果是物件,首先會呼叫valueof()方法,然後確定返回值是否能夠轉化成數值。如果轉化的結果是nan,則基於這個返回值再呼叫tostring()方法,在測試返回值。
var box=
};alert(number(box)); //nan
由於number()函式在轉換字串時比較複雜且不夠合理,因此在處理整數的時候更常用的是parseint()。
alert(parseint('465lee')); //465,返回整數部分
alert(parseint('lee465lee')); //nan,如果第乙個不是數值,就會返回nan
alert(parseint('12lee56lee')); //12,從第乙個數值開始取,到最後乙個連續數值結束
alert(parseint(56.12)); //56,小數點不是數值,會被去掉。
alert(parseint('')); //nan,空返回nan
parseint()除了可以識別十進位制數,開可以識別八進位制和十六進製制。
alert(parseint('0xa')); //10,十六進製制
alert(parseint('070')); //56,八進位制
alert(parseint('0xalee')); //100,十六進製制,lee被自動過濾
ecmascript為parseint()提供了第二引數,用於解決各種的進製轉換。
alert(parseint('0xaf')); //175,十六進製制
alert(parseint('af',16)); //157,第二引數指定十六進製制,可以去掉0x前導
alert(parseint('af')); //nan,這裡看作字串,理所當然nan
alert(parseint('101010101',2)); //314,二進位制轉換
alert(parseint('70',8)); //56,八進位制轉換
parsefloat()是用於浮點數值的轉換,和parseint()一樣,從第一位解析到浮點數值位置。
alert(parsefloat('123lee')); //123,去掉不能識別的部分
alert(parsefloat('0xa')); //0,不認識十六進製制
alert(parsefloat('123.4.5')); 只認乙個小數點
alert(parsefloat('0123.400')); 去掉前後導
alert(parsefloat('1.234e7')); //12340000,把科學計數法轉換成普通數值
js中NaN是什麼
在js中,我們有時會用到一種資料型別 nan 那麼nan究竟是什麼呢?nan 指 not a number 不是乙個數值 nan 屬性是代表非數字值的特殊值。該屬性用於指示某個值不是數字。可以把 number 物件設定為該值,來指示其不是數字值 那麼問題來了 如果讓nan nan,那麼會得到乙個什麼...
js中的 與 用法
1 邏輯或 只有前後都是false的時候才返回false,否則返回true。alert 2 1 2 前面2是true,後面1也是true,結果是2,alert a 1 a 前面 a 是true,後面1也是true 測試結果是 a alert 1 1 前面 是false,後面1是true,而返回結果是...
js中的 與 用法
和 在jquery源 內尤為使用廣泛,由網上找了些例子作為參考,對其用法研究了一下 function a function b var c a b alert c a b 如果執行a 後返回true,則執行b 並返回b的值 如果執行a 後返回false,則整個表示式返回a 的值,b 不執行 func...