为什么有些数据类型是值的拷贝,而另一些是值的引用。这些不同在代码中是如何体现的。这些概念的混淆很容易铸成无数bug。来一窥计算机内存中究竟发生了什么!
序言
本篇文章旨在提供一个模型,帮助理解JavaScript中变量的某些有趣行为。你不需要知道JavaScript引擎是如何实现这些模型的,因为每一种JavaScript引擎的工作原理也不尽相同。
原始值和引用值
JavaScript有5种数据类型的赋值是值的拷贝:
① Boolean(布尔值)
② null(空值)
③ undefined (未定义值)
④ String(字符值)
⑤ Number(数值)
上述5种值是原始类型(primitive types)。
JavaScript还有另外3种数据类型,它们的赋值是引用的拷贝:
① Array(数组)
② Function(函数、方法)
③ Object(对象)
以上这3种都是对象类型。