1. 七种内置类型
null、undefined、boolean、number、string、object、symbol(ES6新增) ,除object外,其他统称“基本类型”。
typeof null === "object”; // true
typeof Symbol() === "symbol"; // true
2. 检测null值需要使用复合条件
var a = null;
(!a && typeof a === "object"); // true
3. undefined和undeclared
(1)使用未声明的变量
var a; a; // undefined,已声明未赋值
b; // ReferenceError: b is not defined
(2)typeof
var a; typeof a; // undefined,a已声明,没有赋值
typeof b; // undefined, b其实是undeclared,但是在JavaScript里面没有undeclared类型,也报undefined
4. 判断未声明的变量
// 这样会抛出错误
if (DEBUG) {
console.log("Debugging is starting");
}
// 这样是安全的
if (typeof DEBUG !== "undifined") {
console.log("Debugging is starting");
}
5. 咬文嚼字
原文P5提到“null是基本类型中唯一的一个“假值”(falsey或者false-like,参见第4章)类型“,这句话似乎有误,其实以下情况在js条件判断是都是false:
undefined、null、false、0、NaN、"" 或 ''(空字符串)
也就是说null和undefined都是基本类型中的“假值”。