<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>简单类型与复杂类型小结</title>
<script>
//null 类型比较特殊,其类型返回值为一个空的对象object
var temp = null;
console.log(typeof temp);
//用处假如有一个变量并且打算以后将其存储为对象 但暂时没想好放什么此时就用null
// 1.简单数据类型 是存放在栈里面的 里面直接开辟一个空间存放的是值
// 2.复杂数据类型 首先在栈里面存放地址 十六进制表示 然后这个地址指向堆里面的数据
</script>
</head>
<body>
</body>
</html>
1.简单数据类型又叫基本数据类型 或者值类型,复杂类型又叫引用类型
值类型:简单数据类型/基本数据类型 在存储时变量中存储的是值本身,因此叫值类型
例如:string number boolean undefined null
2.引用类型:复杂数据类型(系统对象,自定义对象),如:object array data等
3.堆栈
(1.)栈(操作系统):有操作系统自动分配释放存放函数的参数值,局部变量的值等
其操作方式类似于数据结构中的栈,简单数据类型存放到栈里面
(2.)堆(操作系统):存放复杂类型(对象),一般有程序员分配释放,若程序员不释放
有垃圾回收机制回收,复杂数据类型存放到堆里面
JS中没有堆栈的概念
5.简单数据类型传参
函数的形参也可以看作是一个变量,当我们把一个值类型变量作为参数传给函数的形参时其实是把变量
在栈空间里的值复制了一份给形参,那么在方法内部对形参做任何修改,都不会影响到外部变量
例如:
var num = 10;
num = 20;
console.log(num);//20
function fn(a){
a++;
console.log(a);
}
var num = 10;
fn(x);
console.log(x);//输出11,10
复杂数据类型
函数的形参也可以看作是一个变量,把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆的地址值
复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象。
function Person(name){
this.name = name;
}
function f1(x){//x = p;表示x,p的地址相同
console.log(x.name);//2.这个输出什么,刘德华
x.name = '张学友';
console.log(x.name);//3.这个输出什么,张学友
}
var p = new Person('刘德华');
console.log(p.name);//1.这个输出什么,刘德华
f1(p);
console.log(p.name);//这个输出什么,张学友
小结:
简单数据类型是把值,把结果传递过去了
复杂数据类型在传递时,一定是把地址传过去的
JS学习之简单类型与复杂类型小结
最新推荐文章于 2024-10-06 13:20:09 发布