2012-12-03 67 views

回答

10

這意味着

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

,或者你可以說。在一個statment

還有一件事

window.a ==右

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

兩個賦值?

是的這是正確的。它會返回true

+0

是否在你的'window.a == a'語句中不包含'iframes'或'nodejs'? – Petah

1

同:

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

沒有,window.aa並不總是相等的。通常,它在Web瀏覽器JavaScript解釋器中的全局範圍內是相等的。

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 
} 
0

這是相同的,如:

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

window.a ==一個會真正在這種情況下,上面的語句之後。有些情況下它會是錯誤的,例如:當a是全局變量時。

還有一件事:下次請爲您的問題找到更多信息標題。

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」和「window.a」是相同的變量。 'a'實際上是'window'對象的一個​​屬性。所有全局變量都是'window'對象的屬性。明知你可以寫你像這樣的代碼,而該代碼將corresponnding:

<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> 
0

其實,如果a的值爲Number.NaN,則window.a==a可能爲假。這是因爲Number.NaN不等於任何值,包括它本身。