求大神解答,Js函数传参都是按值传递 这一观点是不是错误的?

我想改昵称啊啊啊 2016-11-25 08:48:36
Js高级程序设计一书里,说函数参数只能按值传递,我研究了好久,网上的解释也恍恍惚惚。最不懂的是,作者为什么要把形参obj重写,然后得出结论:obj的属性的改变不能引起外部person属性的改变,所以这不是一个引用传递。我的天!都重写了!obj都已经换指向了,跟person毛关系都没了!当然引不起person的属性改变了,还是不能理解对象的按值传递。难道我理解有问题吗?求大神解答!感激不尽!为此头疼一天了。
...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
当作看不见 2016-11-25
  • 打赏
  • 举报
回复

obj1={
	a:1
}
function check(obj){
	console.log(obj.a);
	obj.a=3;
}
check(obj1)
console.log("obj1"+obj1.a)//obj1的值发生了改变

function check1(obj){
	console.log(obj.a);
	var obj=new Object();//重新定义obj --》一个存在的变量重新定义  《==》赋值
	obj.a=4;//赋值
}
console.log("obj1="+obj1.a)//没有发生改变
bringtree 2016-11-25
  • 打赏
  • 举报
回复
对象不是按值传递,但是可以 可以用 .trim 等方法 克隆复制。。
天际的海浪 2016-11-25
  • 打赏
  • 举报
回复
对象是固定按引用传递的。利用这点我们可以做到不用返回值的情况下修改函数外对象的属性。 但有时我们不需要引用传递,这就要对对象克隆重写,让它变成像是按值传递一样。我想书中应该是这个意思。

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧