Javascript基本类型和符合类型的参数传递

Javascript与Java完全的类似,JS的参数传递也完全是采用 值传递的方式.

基本类型的参数传递

对于基本类型的参数,JS采用值传递的方式,当通过实参调用函数时,传入函数的并

非实参本身,而是实参的副本,因此在函数中修改的值并不会对实参有任何的影响.

代码示例如下:

<script>
	function change(arg1)
	{
		arg1=10;
		document.writeln("函数执行中的arg1的值为:"+arg1+'<br />');
	}
	var x=5;
	document.writeln("函数调用之前X的值为:"+x+'<br />');
	change(x);
	document.writeln("调用函数之后X的值为:"+x+"<br />");
</script>

执行结果如下:
在这里插入图片描述

通过结果我们可以证实当使用X变量作为参数调用change函数时,X并未真正的传

入函数中,传入的仅仅是X的副本,所以X的值并不会改变.

符合类型的参数传递

对与复合类型的参数来说依然是值传递的方式.

代码示例如下:

<script>
	function changeAge(person){
		person.age=10;
		document.writeln("函数执行中person的age的值为:"+person.age+"<br />");
		person=null;
	}
	var person={age:5};
	document.writeln("函数执行之前person的age的值为:"+person.age+"<br />");
	changeAge(person);
	document.writeln("函数执行之后person的age的值为:"+person.age+"<br />");
	document.writeln("person的对象为:"+person);
</script>
运行结果为:
函数执行之前person的age的值为:5
函数执行中person的age的值为:10
函数执行之后person的age的值为:10
person的对象为:[object Object]

如果仅从ag的属性值来判读,很容易认为这是采用了引用传递方式,但是事实上还

是这种判断是错误的,还是采用的值传递的方式.

我们可以发现person在函数执行完之后,依然是一个对象,并不是null,这表明

person本身并没有传入函数当中,只是穿入了一个副本.

上面的程序关键是:

符合类型的变量本身并不持有对象本身.当把person符合类型传入函数时,传入的

依然是,变量的副本,只是这个副本和原person变量只想同一个JS对象,因此不管是

修改副本所值的对象,还是原person符合类型所值的对象,都是修改的同一个对象.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值