js中的参数传递

注意:js中的参数遵从值拷贝原则,那到底什么是值拷贝呢?我们根据代码好好分析一下就明白了

1.对于基本数据类型

在js中,使用函数的时候如果参数是基本数据类型
	<script type="text/javascript">
		var num=100;
		function add(num){
			num+=100;
			console.log(num);
		}
		add(num);//输出200
		console.log(num);//输出100
	</script>
注意请看上面代码的输出情况,第一个输出的是200,第二个输出的100,所以这就是所谓的值拷贝,就是相当于参数num在函数内部新创建了一个num变量,可以这样理解当外面的参数传递进来之后外面的变量已经和函数内部没有关系了。所以会输出一个200,一个100.

2.对于引用数据类型

在js中如果参数是引用数据类型,那么传递的就是引用数据类型的指针。说到指针就会涉及到栈,堆等等内容,这里不做其他内容的过多介绍。暂时可以记住:引用数据类型在内存的栈空间中存储的是指针,在堆空间中存储的是指针指向的内容。
	<script type="text/javascript">
		var obj={
			name:"aa"
		}
		function fun(obj){
			console.log(obj.name);//输出aa
			obj.name="bb";
			console.log(obj.name);//输出bb
		}
		fun(obj);
		console.log(obj.name);//输出bb
	</script>
观察上面的代码可以看出当参数obj传递进入函数之后,如果函数内部对obj进行了操作,那么原来的obj也会发生改变。

3.总结

上面的两种情况就是在js中传参的原则,也就是所谓的值拷贝,其实我觉得其实只要记住一点引用数据类型传递是指针就可以啦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值