Javascript 值类型和引用类型
本篇文章由:http://xinpure.com/javascript-value-types-and-reference-types/
Javascript变量类型
-
值类型: 字符串、数字、布尔、Null、Undefined
-
引用类型: 数组、对象、函数
值类型与引用类型的比较
通过两个实例来比较这两种类型 (调试环境: Chrome 开发者工具 Console)
值类型实例
var a = 'hello';
var b = a;
b; /* hello */
a = 'world';
b; /* hello */
值类型的变量赋值过程,其实是分配了一块新的内存空间,值相同但两者互不干扰
引用类型实例
/* 对象或数组 */
var a = {"x": 0};
var b = a;
b.x; /* 0 */
a.x = 1;
b.x; /* 1 */
a = {"x": 2}; /* 此时,a 指向了另一块内存空间,b 的值将不受干扰 */
b.x; /* 1 */
a.x = 3;
b.x; /* 1 */
/* 函数 */
var a = new Function("alert('test')");
var b = a;
b(); /* 执行 alert('test') */
引用类型的变量赋值过程,是将两个变量指向了同一块内存空间,其中一个变量值的改变都会引起另一个变量值的改变