【读书笔记】你不知道的JavaScript--内置类型

js有7种内置类型,分别是
undefined null boolean string number symbol object
除对象之 Object 外,其他统称为“基本类型”。
符号 symbol 是ES6 中新增

null 以外的六种类型均有同名的字符串值与之对应

typeof undefined === "undefined"; // true
typeof true === "boolean"; // true
typeof 1 === "number"; // true
typeof "1" === "string"; // true
typeof {} === "object"; // true
typeof Symbol() === "symbol"; // true
typeof null === "object";  // true

typeof 返回值为 object 的值中,只有 null 为假值,所以我们可以用下面方法检查变量是否为 null

var a = null;
(!a && typeof a === "object"); // true

再来看下面一段代码

typeof function a(){} === "function"; // true

虽然 typeof 会为函数返回单独的字符串值 function,但是规范约定它实际上是 object 的一个“子类型”。具体来说,函数是“可调用对象”,它有一个内部属性 [[Call]],该属性使其可以被调用。

另一个需要注意的是数组

typeof [] === "object"; // true

确切地说,数组也是 object 的一个“子类型”
我们可以通过下面的方法检查变量是不是数组

var a = []
Array.isArray(a)   // true
Object.prototype.toString.call(a) === "[object Array]"  // true

typeof 处理未声明的变量时,会返回 undefined, 这是因为 typeof 有一个特殊的安全防范机制。这样我们可以安全的检查变量是否声明了

if (!nodeclar) {   // 如果nodeclar为声明,会报错
    // ...
}
if (typeof nodeclar !== undefined) { // 不报错
    // ...
}

需要注意的是

在对变量执行 typeof 操作时,得到的结果并不是该变量的类型,而是该变量持有的值的类型,因为 JavaScript 中的变量没有类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值