我在一些代码中看到了那行
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 是真的,因为 '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>
如同:
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 在这种情况下将是真的。在某些情况下它会是假的,例如:当 a 是一个全局变量时。
还有一件事:下次请为您的问题找到更多信息标题。
实际上,如果有 valuewindow.a==a
可以是 false 。那是因为不等于任何值,包括它自己。a
Number.NaN
Number.NaN