2016-09-30 82 views
0

這是一個流行的模式,以指定一個默認值:Chrome Javascript是否正確評估布爾表達式?

var aBool = '' || false; 
var aString = false || ''; 

上述會給aBool布爾false值,ASTRING一個空字符串的值,至少在Chrome的和FF的控制檯。這是相反的:

如果它可以轉換爲true,則返回expr1;否則,返回 expr2。因此,當與布爾值一起使用時,||如果 操作數可以轉換爲true,則返回true;如果兩者都可以轉換爲假,則 返回false。 來源:mozilla

這實際上很方便,但它是正確的嗎?

+1

不,它不是,實際上沒有意義。隨意編輯該頁面(「因此...」部分應該被刪除)。 – georg

+0

「如果可以將其轉換爲'true',則返回'expr1';否則返回'expr2'」是句子的重要部分 –

+2

有什麼不對,對我來說似乎是正確的? *如果與布爾值*一起使用,如果其中一個操作數爲true,則返回true;如果兩個都爲false,則返回false? – adeneo

回答

0

從同一個網頁,它說:可以轉換爲false表達式

的例子是:

  • 空;
  • NaN;
  • 0;
  • 空字符串(「」);
  • 未定義。

在你的第一個例子,你有一個空字符串,所以當轉換爲布爾轉換爲false。由於expr1不能轉換爲true,表達式返回expr2,即false

在你的第二個例子中,expr1false,所以它返回expr2,它是''。轉換爲Boolean僅用於確定應該返回哪個表達式,它不返回轉換後的值。

+0

謝謝,我知道它做了什麼,只是與文檔混淆。現在已經修好了,我放心了;) – ptrk