Js类型转换装箱与拆箱

众所周知,JS 是一门弱类型语言。它不需要事先具体声明变量的类型,因为会在程序运行过程中,类型会被自动推断确定。因此,可以用同一个变量保存不同类型的数据:

var a = 1;
a = ‘abc’;
a = {
x: 1
};


装箱

a.x 或者 a[‘x’] 中“.”和“[]”操作符是专门用来获取引用类型属性值的。然而在 JS 中基本类型变量也是可以使用“点”的,这给初学者造成一定困惑,比如:

1
2
3
4
var a = 1;
a.x = 2;
console.log(a);// 1 
 console.log(a.x);// undefined  

其实,上述代码运行过程中发生了所谓的“装箱”操作。
比如第二行:

1
a.x = 2

等价于:

1
2
3
var temp = new Number(a)
temp.x = 2
temp = null

因为 2 是基本类型,在取其属性时,先用对应的 Number 构造函数包裹成一个临时对象,然后再对临时对象取属性值操作,随后这个临时对象便销毁。

拆箱

【JS迷你书】类型转换之拆箱操作

参考文章

【JS迷你书】类型转换之装箱操作


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!