![](/img/trans.png)
[英]Javascript function transfomr my value in undefined. Me and my teacher does'nt understand why
[英]why does'nt my js code reflect the right runtime value?
当我运行此代码时(under a <script> code)
window.msg = { a: 0}
var b = window.msg;
function g()
{
console.log(b)
}
msg = { a: 1};
g()
在控制台中 - 我得到{a:0}。
这是为什么 ? 我以为msg = { a: 1};
将更新参考...
如果您将代码更改为:
window.msg = { a: 0}
var b = window.msg;
function g()
{
console.log(b)
}
msg.a = 1; // this line is changed
g()
你会得到{a:1}
。
你重新分配了msg
所以b
只指向msg
的旧值。
b
不引用window.msg
而是引用{a:0}
对象。
您正在创建对象{ a: 0 }
,并将该对象的引用分配给msg
和b
。 稍后,您正在创建一个新对象{ a: 1 }
,并将该对象的引用分配给msg
,但b
仍然引用原始对象:
window.msg = { a: 0} // msg --> { a: 0 }, b --> undefined
var b = window.msg; // msg --> { a: 0 }, b --> { a: 0 }
msg = { a: 1}; // msg --> { a: 1 }, b --> { a: 0 }
g() // prints b --> { a: 0 }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.