web-dev-qa-db-ja.com

Javascriptショートハンド三項演算子

私はこの冗長な三項演算子構文を使用する代わりにPHP 5.3で知っています:

startingNum = startingNum ? startingNum : 1

...必要に応じて、3項演算子に簡略構文を使用できます。

startingNum = startingNum ?: 1

そして、私はjavascriptの三項演算子について知っています:

startingNum = startingNum ? startingNum : 1

...しかし、速記はありますか?

みんなありがとう!

83
Web_Designer
var startingNumber = startingNumber || 1;

あなたが探しているもののようなもの、未定義の場合はデフォルトです?

var foo = bar || 1; // 1
var bar = 2;
foo = bar || 1;     // 2

ところで、これはオブジェクトを含む多くのシナリオで機能します:

var foo = bar || {}; // secure an object is assigned when bar is absent
140
Brad Christie

||は、遭遇した最初の真理値を返すため、C#の??と同様に、合体演算子として使用できます。

startingNum = startingNum || 1;
23
Adam Rackis

はいあります:

var startingNum = startingNum || 1;

一般的に、expr1 || expr2は次のように機能します( ドキュメント で述べたように):

trueに変換できる場合はexpr1を返します。それ以外の場合、expr2を返します。したがって、Boolean値とともに使用すると、||は、いずれかのオペランドがtrueの場合、trueを返します。両方がfalseの場合、falseを返します。

11
Tadeck
var startingNum = startingNum || 1;

この場合、OR演算子を使用できます。

1
Daniel
startingNum = startingNum || 1

次のように、nullの条件がある場合

startingNum = startingNum ? startingNum : null

「&&」を使用できます

startingNum = startingNum && startingNum
1
a2441918

次のような3項を作成するには:

boolean_condition ? true_result : false_result

javascriptでは、次のことができます:

(boolean_condition && true_result ) || false_result;

例:

(true && 'green') || 'red';
=> "green"
(false && 'green') || 'red';
=> "red"
0
xxjjnn

上記の答えは正しいです。 JavaScriptでは、次のステートメント:

startingNum = startingNum ? otherNum : 1

として表現することができます

startingNum = otherNum || 1

ここで説明されていない別のシナリオは、一致しない場合に値がfalseを返すようにする場合です。これのJavaScriptの短縮形は次のとおりです。

startingNum = startingNum ? otherNum : 0

しかし、それは次のように表現できます

startingNum = startingNum && otherNum

他の人がより一般的な答えを探している場合に備えて、別のシナリオをカバーしたかっただけです。

0
John Pace