好傢伙,
本篇內容為《JS高階程式設計》第三章學習筆記
ECMAScript有6種簡單資料型別(稱為原始型別):
Undefined, Null, Boolean, Number, String和Symbol。
Symbol (符號)是ECMAScript6新增的。還有一種複雜資料型別叫Object(物件)。
Object是一種無序名值對的集合。因為在ECMAScript中不能定義自己的資料型別,所有值都可以用上述7種資料型別之一來表示。
只有7種資料型別似乎不足以表示全部資料。但ECMAScript的資料型別很靈活,一種資料型別可以當作多種資料型別來使用。
因為ECMAScript的型別系統是鬆散的,所以需要一種手段來確定任意變數的資料型別。
typeof操作符就是為此而生的。對一個值使用typeof操作符會返回下列字串之一:
let a;
let b =true;
let c ="panghu";
let d = 20;
let e =new Object();
let f =function(){};
let g =Symbol("panghu");
console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
console.log(typeof d);
console.log(typeof e);
console.log(typeof f);
console.log(typeof g);
生動形象:
當然,會有特殊情況:
typeof null 返回的是"object"
特殊值null被認為是一個對空物件的參照
let h =null;
console.log(typeof h);
undefined型別只有一個值,正是undefined,(我自成一類)
當宣告了變數卻沒有初始化時,變數自動被賦予undefined值
正常人應該能看出來這是一個完全沒必要的操作
一般來說,永遠不用顯示的給某個變數設定undefined值.字面值undefined主要用於比較.
增加這個特殊值的目的就是為了正式明確空物件指標(null)和未初始化變數的區別
舉個例子,
let panghu;
console.log(panghu);
console.log(kunkun);
有宣告,無初始化,報undefined
無宣告,報錯
undefined是假值
null型別只有一個值,即null,邏輯來說,null值表示一個空物件指標,
let h =null;
console.log(typeof h);
在定義將來要儲存物件值的變數時,建議使用null來初始化,不要使用其他值。
這樣,只要檢查這個變數的值是不是null就可以知道這個變數是否在後來被重新賦予了一個物件的參照,
比如:
if(panghu! =null){
//好了,我不為空了,我可能已經裝了一個物件了,你不要亂動我
}
console.log(null==undefined)
但與undefined不同的是,
當我們需要在變數中儲存物件的時候,我們可以先用null來填充該變數
(確保該變數不會被塞入一些奇怪的東西)
boolean型別是ECMAScript中使用最頻繁的型別之一,有兩個字面值true和false.
這兩個布林值不同與數值,true不等於1,false不等於0;(true和false分大小寫)
let panghu = "panghu";
console.log(Boolean(panghu));
(書裡的原圖)