2017-08-12 21 views
0

我剛纔看到這個語法在PHP中:JavaScript中有更簡單的三元運算符嗎?

// Fetches the value of $_GET['user'] and returns 'nobody' 
// if it does not exist. 
$username = $_GET['user'] ?? 'nobody'; 

爲什麼我們不能在JavaScript中的一樣嗎?

我厭倦了做的:

var name = obj['name'] ? obj['name'] : 'GOD';

+0

P.S如果我們已經擁有它,請讓我知道 –

+4

var name = obj ['name'] || '上帝';' –

+0

謝謝。我很不知道這個.. –

回答

1

在javascript中,你可以做到以下幾點:

var name = obj['name'] || "GOD" 

如果第一個值爲false(nullfalse0NaN,""undefined),那麼第二個值將被分配。

1

Null coalescing operator是PHP的新增內容。它是在PHP 7(2015年12月發佈)中推出的,自功能爲proposed for the first time以來已有10多年的歷史。

在Javascript中,logical OR運營商可用於此目的的年齡(since Javascript was created?!)。

作爲documentation說明:

邏輯OR(||

expr1 || expr2

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

而是寫作的

var name = obj['name'] ? obj['name'] : 'GOD'; 

你可以使用更短:

var name = obj['name'] || 'GOD'; 

||操作者可以多次使用,以創建一個計算的第一價值較長的表達非空的操作數:

var name = obj['name'] || obj['desc'] || 'GOD'; 
+0

我很好奇:在問題關閉後30分鐘,您是如何設法回答問題的? –

+0

我不知道。我回答使用移動應用程序。現在我記得在我發佈答案後,問題再次加載並且已經關閉。我當時認爲,在我的回答發佈後,問題被重新加載,但我現在看到,確實,我的答案的第一個版本在問題結束後30分鐘發佈。也許Matrix有一個小故障。 :-) – axiac