概述
简单数据类型和复杂数据类型
- 简单数据类型:即基本数据类型或值类型
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型(null除外)
string number,bollen,undefined,null
//简单数据类型null 返回的是一个空的对象 object
var timer = null;
console.log(typeof timer); //object
//如果有个变量以后打算用来储存为对象,暂时不知道放什么,就给null
- 复杂数据类型:又叫引用类型
复杂数据类型:在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型
通过new关键字创建的对象(系统对象,自定义对象),object,array,date等
堆和栈
简单数据类型放在堆里面,复杂数据类型放到栈里面
简单数据类型:栈里面直接开辟一个存储空间,存放的是值
复杂数据类型:首先在栈里面存放地址,十六进制表示 ,然后这个地址指向堆里面的数据,真正的对象实例是放到堆里面的。
简单类型传参
函数的形参也可看作是一个变量,当我们把一个值类型变量作为参数传给函数的形参时,其实是把变量在栈空间里面的值复制了一份给形参,那么在方法内部对形参做任何修改,都不会影响到外部变量。
function fn(a) {
a++;
console.log(a);
}
var x = 10;
fn(x);
console.log(x);
//x=10 a=11
复杂类型传参
函数的形参也可看作是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参起始保存的是同一个对地址,所以操作的是同一个对象
function Person() {
this.name = name;
}
function f1(x) {//x==p
console.log(X.name);
//输出: 刘德华
X.name = "张学友";
console.log(X.name);
//输出 : 张学友
}
var p = new Person("刘德华");
console.log(p.name);
//输出 : 刘德华
f1(p);
console.log(p.name);
//输出 : 张学友
最后
以上就是细心啤酒为你收集整理的简单数据类型和复杂数据类型--堆、栈/传参的全部内容,希望文章能够帮你解决简单数据类型和复杂数据类型--堆、栈/传参所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复