Javascript 的数据类型

Published: 12 Jan 2016 Category: Javascript

最新的 ECMAScript 标准定义了 7 种数据类型:

  • 6 种原始类型:
    • Boolean
    • Null
    • Undefined
    • Number
    • String
    • Symbol (ECMAScript 6 新定义)
  • 以及 Object
    • Array
    • Boolean
    • Date
    • Function
    • Math
    • Number
    • RegExp
    • String

基本包装类型

除了 null 和 undefined, 所有的基本类型值都有一个包含这个基本类型值的等价对象:

  • String for the string primitive.
  • Number for the number primitive.
  • Boolean for the Boolean primitive.
  • Symbol for the Symbol primitive.

包装类型对象的 valueOf() 方法可以返回它包含的基本类型值。

包装类型的坑

var str = 'string';
str.pro = 'hello';
console.log(str.pro + 'world');

上面的代码会输出什么?

要回答这个问题,需要深入理解包装类型的执行过程。

每一次在基本类型变量 str 上执行一个方法的时候,都会有如下过程:

  • 创建String类型的一个实例
  • 在实例上调用指定的方法
  • 销毁这个实例

str.pro在二次调用的时候,其实上一句的包装类型对象已经销毁了,所以,输出的是: undefinedworld。

About me

我是「renxm」,这是我的网络ID,此处是这个虚拟人格的归宿。