Day16. 眼前的NaN不是NaN,你說的type是什麼type?

Day16. 眼前的NaN不是NaN,你說的type是什麼type?

本日閱讀進度:第七章 重要的資料型別(265~274頁)

重點摘要:

1.null VS undefined

  • 為什麼有這兩個這麼相似的物件? JavaScript一開始的想法是讓一個值代表尚未被初始化為任何值的變數,另一個值代表尚不存在的物件。

  • 該如何區分這兩者的用途? null常用於應該有物件但是卻無法建立或找到的情況,亦即表示一個物件尚不存在; 而undefined常用於變數尚未被初始化、物件缺少了屬性、陣列缺少了值的情況。

2.什麼是typeof?

typeof是JavaScript內建的運算符,可以用來查詢運算元的資料型別。(類似於Ruby的.class方法) 用法如下:

var subject = "Just a string";
var probe = typeof subject;
console.log(probe);
// "string"

大家可以試著想想以下會得到什麼答案:

var test1 = {};
var test2 = ["abc", 123];
var test3;
var test4 = null;
function test5() {return "abcdef"};

console.log(typeof test1);
以下略

3.NaN

NaN常被稱為”Not a number”,代表無法表示的數值結果。例如電腦無法表示0/0的計算結果,所以會以NaN來表示。 有趣的是,它是JavaScript中唯一一個自己不等於自己的值。

console.log(NaN != NaN)
// true

但是上面才說是not a number,用typeof一查:

console.log(typeof(NaN));
// "number"

會不會覺得黑人問號呢?

本來今天想介紹等於運算符(==)的,但已經超過300字了,就等到明天再來互相傷害吧!

PS.標題致敬蕭煌奇的《你是我的眼》

本文同步發表於iT邦幫忙

Recent post