3

我在一些代码中看到了那行

window.a = window.b = a;

它是如何工作的?

以下是否总是返回 true?

window.a == a

4

6 回答 6

10

它的意思是

window.b=a;
window.a=a;

或者你可以说。

window.b=a;
window.a=window.b;

单个语句中的两个分配

还有一件事情

window.a==a 对吗?

是的,这是正确的。它将返回 true

于 2012-12-03T09:00:13.833 回答
2

此分配从右到左运行,因此首先将为“window.b”分配“a”值,然后为“window.a”分配“windows.b”值。

您可以像这样打破这个多重分配并获得相同的结果:

window.b=a;
window.a=a;

您还应该注意范围界定之类的事情。如果您在全局范围内运行此代码,例如像这样的简单脚本:

<script>
    var a = 10;
    window.a = window.b = a;
</script>

window.a==a 是真的,因为 'a' 和 'window.a' 是相同的变量。'a' 实际上是 'window' 对象的属性。所有全局变量都是“窗口”对象的属性。知道您可以编写这样的代码,并且此代码将对应:

<script>
    var a = 10;
    a = b = a;
</script>

但是如果你把这段代码放在一个函数中,它会在函数范围内运行,例如:

<script>
    function ex() {
        var a = 10; // this is local variable
        window.a = window.b = a; // this time window.a != a
    }
</script>
于 2012-12-03T10:15:20.473 回答
1

如同:

window.b = a;
window.a = a;

不,window.a并不a总是平等的。通常,它仅在 Web 浏览器 JavaScript 解释器的全局范围内相等。

于 2012-12-03T09:00:25.650 回答
1

窗口上的ab属性被分配给 的值a。是的,如果这段代码在全局范围内执行,a并且window.a是相同的。

var a = "foo";

//window.a and a are the same variable
window.a = "bar";
a; //bar

function f(){
    var a = "notfoo";

    //window.a is a different variable from a, although they may take the same value
    window.a = "baz";
    a; //notfoo
}
于 2012-12-03T09:01:10.883 回答
0

它是一样的:

window.b=a;
window.a= window.b;

在上面的陈述之后,window.a == a 在这种情况下将是真的。在某些情况下它会是假的,例如:当 a 是一个全局变量时。

还有一件事:下次请为您的问题找到更多信息标题。

于 2012-12-03T09:04:40.150 回答
0

实际上,如果有 valuewindow.a==a可以是 false 。那是因为不等于任何值,包括它自己。aNumber.NaNNumber.NaN

于 2013-01-09T08:53:42.653 回答