为什么我的js代码没有反映正确的运行时值?

d11*_*d11 3 javascript

当我运行此代码时 (under a <script> code)

window.msg = { a: 0}
var b = window.msg;

function g()
{
    console.log(b)
}
msg = {  a: 1};
g()
Run Code Online (Sandbox Code Playgroud)

在控制台中 - 我得到{a:0}.

这是为什么 ?我以为msg = { a: 1};会更新参考...

Hal*_*yon 5

如果您将代码更改为:

window.msg = { a: 0}
var b = window.msg;

function g()
{
    console.log(b)
}
msg.a = 1; // this line is changed
g()
Run Code Online (Sandbox Code Playgroud)

你会得到的{a:1}.

你重新分配msg所以b只指向旧的价值msg.

b不参考window.msg但是{a:0}对象.