简单类型和复杂类型
简单类型又叫做基本数据类型和值类型
,复杂类型又叫做引用类型
值得注意的是,null与其他值类型返回本身不同,它返回的是object;所以当想要把某个变量拿来存储对象时
,但内容还没确定
时,这个时候就给null
堆和栈
在JavaScript中没有堆和栈的概念
,但在其他语言(如Java)中有,这里为了
更好的理解代码
的执行方式和以后学习其他的语言引入此概念,没有相关学习经历可参考堆和栈
简单类型的内存分配
复杂类的的内存分配
简单类型传参
函数的形参也可以看做是一个变量,当我们把一个值类型变量作为参数传给函数的形参时,其实是把变量
栈空间里的值复制了一份
给形参,那么在方法内部对形参做任何修改,都不会影响到的外部变量。
function fn(a){
a++;
console.log(a);
}
var x = 10;
fn(x);//11
console.log(x);//10
复杂类型传参
函数的形参也可以看做是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象
。