2017-08-12 1 views
0

私はPHPでこの構文を見た:JavaScriptでより単純な三項演算子を使用できますか?

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

は、我々はJavaScriptで同じを持っていないのはなぜ?

私はやっての疲れ:

次の操作を行うことができますJavaScriptで

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

+0

P.Sもし私たちが既にそれを持っているなら、私に知らせてください。 –

+4

'var name = obj ['name'] || '神様'; ' –

+0

ありがとう。私はこれを知らなかった。 –

答えて

1

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

最初の値がfalseの場合(nullfalse0NaN,""またはundefined)、2番目の値が割り当てられます。

1

Null coalescing operatorは最近PHPに追加されました。この機能は、PHP 7(2015年12月リリース)で導入されました。機能がproposed for the first timeから10年以上経ちました。

JavaScriptでは、この目的のために、のlogical OR演算子を使用できます。

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

関連する問題