我在一些代码中看到了这一行
window.a = window.b = a;
它是如何运作的?
以下语句总是返回 true 吗?
window.a == a
这意味着
window.b=a;
window.a=a;
或者你可以说。
window.b=a;
window.a=window.b;
单个语句中的两个作业
和
还有一件事
window.a==a 对吗?
是的,这是对的。它将返回true
此分配从右到左进行,因此首先为“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 为 true,因为 '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>
同:
window.b = a;
window.a = a;
不,
window.a
和a
并不总是相等。通常,它仅在 Web 浏览器 JavaScript 解释器的全局范围内相等。
窗口上的
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
}
就像:
window.b=a;
window.a= window.b;
在上面的语句之后,在这种情况下,window.a == a 将为 true。在某些情况下它会是 false,例如:当 a 是全局变量时。
还有一件事:下次请为您的问题找到更多信息丰富的标题。
实际上,如果
window.a==a
的值为 a
,则 Number.NaN
可能为 false。这是因为 Number.NaN
不等于任何值,包括它本身。