JavaScript是值决定类型(动态语言),其他大部分语言是类型决定值
原始值:stack(放栈里)
Number String Boolean undefined null
引用值:heap(放堆里)
array Object function ... date RegEx
引用值和原始值唯一的不同是赋值形式的不同
原始值:
var a = 10;
var b = a;//a的值放b里面去
a = 20;
document.write(b);//10
第一个值放第二个值里面,第一个值(a)改变,第二个值(b)不变
stack 拷贝(cope)所以互相不影响
var num = 100;
num = 200;正确的栈内写法哟
引用值:
var arr = [1];
var arr1 = arr;
arr.push(2);
document.write(arr);//1,2
document.write(arr1);//1,2
第一个值放第二个值里面,第一个值改变,第二个值也改变
heap 指针 拷贝的地址 指向同一个房间
注意!!!:
var arr = [1];
var arr1 = arr;
arr = [1,3];开辟新的房间呀!!
document.write(arr1);//1,2
上面的数组并不是这样子存储在堆里面的 这里是为辣好理解
我的稿子都是看课的笔记,渡一姬成