我在某些代码中看到了这一行
window.a = window.b = a;
它是如何工作的?
以下是否总是返回true?
window.a == a
答案 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.a
和a
并不总是相等。通常,它仅在Web浏览器JavaScript解释器中的全局范围上相等。
答案 3 :(得分:1)
窗口上的a
和b
属性被分配给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
}
答案 4 :(得分:0)
就像:
window.b=a;
window.a= window.b;
在上面的陈述之后,window.a == a将在这种情况下为真。在某些情况下它会是错误的,例如:当a是全局变量时。
还有一件事:请在下次为您的问题找到更详细的标题。
答案 5 :(得分:0)
实际上,如果window.a==a
的值为a
,则Number.NaN
可能为false。那是因为Number.NaN
不等于任何值,包括它自己。