JS学习之简单类型与复杂类型小结

<!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);//这个输出什么,张学友
  
  
  小结:
  简单数据类型是把值,把结果传递过去了
  复杂数据类型在传递时,一定是把地址传过去的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值