你不知道的JavaScript(中卷)1.2  内置类型_你不知道的JavaScript(中卷)1.2  内置类型试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 你不知道的JavaScript(中卷) > 1.2  内置类型

你不知道的JavaScript(中卷)——1.2  内置类型

JavaScript 有七种内置类型: 空值(null) 未定义(undefined) 布尔值( boolean) 数字(number) 字符串(string) 对象(object) 符号(symbol,ES6 中新增) 除对象之外,其他统称为“基本类型”。 我们可以用typeof 运算符来查看值的类型,它返回的是类型的字符串值。有意思的是,这七种类型和它们的字符串值并不一一对应: typeof undefined === "undefined"; // true typeof true === "boolean"; // true typeof 42 === "number"; // true typeof "42" === "string"; // true typeof { life: 42 } === "object"; // true // ES6中新加入的类型 typeof Symbol() === "symbol"; // true 以上六种类型均有同名的字符串值与之对应。符号是ES6 中新加入的类型,我们将在第3 章中介绍。 你可能注意到null 类型不在此列。它比较特殊,typeof 对它的处理有问题: typeof null === "object"; // true 正确的返回结果应该是"null",但这个bug 由来已久,在JavaScript 中已经存在了将近二十年,也许永远也不会修复,因为这牵涉到太多的Web 系统,“修复”它会产生更多的bug,令许多系统无法正常工作。 我们需要使用复合条件来检测null 值的类型: var a = null; (!a && typeof a === "object"); // true null 是基本类型中唯一的一个“假值”(falsy 或者false-like,参见第4 章)类型,typeof 对它的返回值为"object"。 还有一种情况: typeof function a(){ /* .. */ } === "function"; // true 这样看来,function(函数)也是JavaScript 的一个内置类型。然而查阅规范就会知道, 它实际上是object 的一个“子类型”。具体来说,函数是“可调用对象”,它有一个内部属性[[Call]],该属性使其可以被调用。 函数不仅是对象,还可以拥有属性。例如: function a(b,c) { /* .. */ } 函数对象的length 属性是其声明的参数的个数: a.length; // 2 因为该函数声明了两个命名参数,b 和c,所以其length 值为2。 再来看看数组。JavaScript 支持数组,那么它是否也是一个特殊类型? typeof [1,2,3] === "object"; // true 不,数组也是对象。确切地说,它也是object 的一个“子类型”(参见第3 章),数组的元素按数字顺序来进行索引(而非普通像对象那样通过字符串键值),其length 属性是元素的个数。

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《你不知道的JavaScript(中卷)》其他试读目录

• 1.1  类型
• 1.2  内置类型 [当前]
• 1.3  值和类型
• 1.4  小结
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •