2010-11-04 32 views
2

這是一個理論問題,因爲我無法想象任何實際用途。`if(x = y)`會返回false還是失敗在JavaScript中?

我今天做了一個大膽的聲明說,在JavaScript中,下面將始終返回true:

if (x=y){ 
    //code 
} 

而且//code,不管它是什麼,就一定會執行。

這是不輸入==甚至===的經典錯字。

此功能也可以在C/C++中演示,但是比JavaScript更強大的類型語言,不難想象這種分配將失敗的實例。

但是,在JavaScript中,給定了兩個變量xy,我很困難地想到這種情況會失敗,或者前面的條件代碼塊不會執行。

有人嗎?

+0

對於downvoter:如果你曾經回來,請解釋爲什麼。沒有解釋的降伏是非常沒用的。 – 2010-11-04 09:35:18

回答

14

如果y = 0,y = null,y = undefined或y = false,則它(x = y)將計算爲false。

編輯:另外,如果Y = NaN的

編輯:另外如果y = 「」

+0

澄清;該表達式基本上評估'y'的值,因此如果'y'等於'false',則該語句將是錯誤的。 – 2010-11-04 08:59:45

+1

或NaN或空字符串。任何「虛假」的東西:http://www.google.de/search?q=javascript+falsy – RoToRa 2010-11-04 09:00:03

+0

@Tatu - 好吧,它也設置了「x」的值。這可能很重要。 – 2010-11-04 09:00:50

1

的條件塊 「X = Y」 永遠執行。但在javascript「false」中,undefined,null和0的計算結果爲false。所以,只要y是其中的一個值,「// code」就不會被執行。

1
js 
js> if(x=y){ 
print('hello'); 
} 
typein:1: ReferenceError: y is not defined 
js> 
相關問題