请问这道笔试题,怎么解释合理
发布于 5 年前 作者 JingMo 5483 次预览 最后一次回复是 5 年前 来自 问答
var a={name:“hello”}, b={name:“hi”} function exchange(a, b){ var c=b; b=a; a=c; a.name=a.name+“1”; b.name=b.name+“2”; console.info(a.name,b.name); } exchange(a, b); console.info(a.name, b.name);
输出: hi1 hello2 hello2 hi1
2 回复
我改了一下你的代码,这样好理解一点。 这里面考察了传共享对象调用,当修改是会对原值产生影响,而完全赋值是会开辟一个新的内存区域,在这个区间内访问的是新的内存区域,而外部访问的是另一块内存区域
这种方式不是js特有的,其他的编程语言也有 https://www.wikiwand.com/zh-hans/求值策略
谢谢