简单数据类型和复杂数据类型
- 简单数据类型:即基本数据类型或值类型
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型(null除外)
string number,bollen,undefined,null
复制代码
1
2
3
4
5//简单数据类型null 返回的是一个空的对象 object var timer = null; console.log(typeof timer); //object //如果有个变量以后打算用来储存为对象,暂时不知道放什么,就给null
- 复杂数据类型:又叫引用类型
复杂数据类型:在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型
通过new关键字创建的对象(系统对象,自定义对象),object,array,date等
堆和栈
简单数据类型放在堆里面,复杂数据类型放到栈里面
简单数据类型:栈里面直接开辟一个存储空间,存放的是值
复杂数据类型:首先在栈里面存放地址,十六进制表示 ,然后这个地址指向堆里面的数据,真正的对象实例是放到堆里面的。
简单类型传参
函数的形参也可看作是一个变量,当我们把一个值类型变量作为参数传给函数的形参时,其实是把变量在栈空间里面的值复制了一份给形参,那么在方法内部对形参做任何修改,都不会影响到外部变量。
复制代码
1
2
3
4
5
6
7
8
9
10function fn(a) { a++; console.log(a); } var x = 10; fn(x); console.log(x); //x=10 a=11
复杂类型传参
函数的形参也可看作是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参起始保存的是同一个对地址,所以操作的是同一个对象
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18function 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); //输出 : 张学友
最后
以上就是细心啤酒最近收集整理的关于简单数据类型和复杂数据类型--堆、栈/传参的全部内容,更多相关简单数据类型和复杂数据类型--堆、栈/传参内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复