我在一些代码中看到了这行代码
window.a = window.b = a;
它是如何工作的?
以下内容是否总是返回true?
window.a == a
我在一些代码中看到了这行代码
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' 将被赋值为 'window.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>
窗口上的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 = a;
不,window.a
和a
并不总是相等的。通常情况下,它们只在Web浏览器JavaScript解释器的全局范围内相等。
这与以下内容相同:
window.b=a;
window.a= window.b;
在这种情况下,语句之后window.a == a将为true。有些情况下它将为false,例如:当a是全局变量时。
还有一件事:下次请为你的问题找一个更具信息性的标题。
window.a==a
语句中包含iframes
或nodejs
? - Petah