Javascript多赋值语句

时间:2012-12-03 08:58:47

标签: javascript

我在某些代码中看到了这一行

window.a = window.b = a;

它是如何工作的?

以下是否总是返回true?

window.a == a

6 个答案:

答案 0 :(得分:10)

意味着

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

或者你可以说。

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

单个陈述中的两项作业

  

还有一件事

     

window.a == a right?

是的,这是对的。它将返回true

答案 1 :(得分: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'对象的属性。所有全局变量都是'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>

答案 2 :(得分:1)

同样:

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

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

答案 3 :(得分:1)

窗口上的ab属性被分配给a的值。是的,如果此代码在全局范围内执行,则awindow.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
}

答案 4 :(得分:0)

就像:

window.b=a;
window.a= window.b;
在上面的陈述之后,

window.a == a将在这种情况下为真。在某些情况下它会是错误的,例如:当a是全局变量时。

还有一件事:请在下次为您的问题找到更详细的标题。

答案 5 :(得分:0)

实际上,如果window.a==a的值为a,则Number.NaN可能为false。那是因为Number.NaN不等于任何值,包括它自己。