《你不知道的JavaScript中卷》第一部分讀書筆記(2)

書的封面

表達式void _沒有返回值,因此返回結果是undefined。void并不改變表達式的結果,只是讓表達式不返回值:

e.g.

var a=42;

console.log(void a, a); //undefined 42

void 0、void 1和undefined之間并沒有實質上的區別。


NaN意指“不是一個數字”,理解為“無效數值”“失敗數值”或“壞數值”可能更準確些。

NaN !=NaN; //true

e.g.

var a = 2/"foo";

var b = "foo";

a; //NaN

b;//"foo"

window.isNaN(a);//true

window.isNaN(b); //true

if(!Number.isNaN) {

Number.isNaN = function(n) {

return n !== n;

};

}


var a = 1/0; //Infinity

var b = -1/0; //-Infinity

var c = Infinity/Infinity;//NaN

有窮正數除以Infinity,結果是0。

JSON.stringify(-0)返回"0",而JSON.parse("-0")返回-0。

0 === -0;//true

區分-0和0:

function isNegZero(n){

n = Number(n);

return (n === 0) && (1/n === -Infinity);

}

isNegZero(-0); // true

isNegZero(0/-3); // true

isNegZero(0); //false


if(!Object.is){

Object.is = function (v1, v2){

//判斷是否-0

if(v1 === 0 && v2 === 0){

return 1/v1 === 1/v2;

}

//判斷是否為NaN

if(v1 !== v2){

return v2 !== v2;

}

//其他情況

return v1 === v2;

};

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容