2015-10-16 82 views
4
var text = 'abc'; 
if(text = '' || text != '') 
    console.log(text); 
else 
    console.log('in else'); 

這只是一個無用的代碼片段,但它給出了我根本沒有想到的奇怪結果。所以我的好奇心把我帶到了這裏。如果語句更新變量

僅打印true

爲什麼它將text的值更新爲true而不是將其設置爲空?

+1

使用'text ==''' – Tushar

+0

@Tushar我知道,我沒有檢查條件。我正在更新var – Shaharyar

+0

您可能想要的內容 –

回答

7

表達

text = '' || text != '' 

被解析爲

text = ('' || text != '') 

('' || text != '') 

的值是布爾值true因爲text != ''true

+0

運營商該死的優先事項:-D – Grundy

+0

哦,我的天啊!你是怎麼知道的?曾經經歷過嗎? – Shaharyar

+1

@Shaharyar以及它的語言是如何工作的:)賦值運算符的優先級相當低,因爲很多東西會更令人困惑。 – Pointy

2

條件'' || text != ''評估爲true。然後將該值分配給變量text

這裏,''是錯誤值,所以執行||(OR)後的下一個條件。由於text的值不是空字符串,因此條件text != ''返回true,並將此值分配給text