JS中NaN定義與用法

2021-07-28 04:33:43 字數 3038 閱讀 9651

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...