回答:
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
||
代わりに??
?
||
演算子はtrueまたはfalseを返さず、最初の「真の」値を返すため、これは機能します。あなたが持っていると言うval0
とval1
としてundefined
、そしてval2
ある2
、val3
です3
。 これは最初の「真の」値なので、val0 || val1 || val2 || val3
を返し2
ます。
||
遭遇した最初の真の値を返すため、C#と同様に合体演算子として使用できます。 ??
startingNum = startingNum || 1;
はいあります:
var startingNum = startingNum || 1;
一般expr1 || expr2
に、次のように機能します(ドキュメントで言及されているように)。
expr1
に変換できるかどうかを返しますtrue
。それ以外の場合はを返しますexpr2
。したがって、Boolean
値とともに使用すると、いずれかのオペランドがである場合に||
戻ります。両方の場合、を返します。true
true
false
false
if a is truthy
対と言う方がより正確ではありませんif a is evaluated to true
か?
上記の答えは正しいです。JavaScriptでは、次のステートメント:
startingNum = startingNum ? otherNum : 1
次のように表すことができます
startingNum = otherNum || 1
ここでカバーされないもう1つのシナリオは、一致しない場合に値がfalseを返すようにする場合です。このためのJavaScript省略表現は次のとおりです。
startingNum = startingNum ? otherNum : 0
しかし、それは次のように表すことができます
startingNum = startingNum && otherNum
他の人がより一般的な答えを探している場合に備えて、別のシナリオを取り上げたかっただけです。
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
か:???
innerWidth * 0.0375 > 24
あるif true
部分とは異なるためinnerWidth * 0.0375
。短縮形は、the expression to be evaluated
とthe if true
が同じ値である場合にのみ使用できます。同じ理由で、速記ができなくなりますx = someBoolean ? 'Heck yea!' : 'No way!'
。
Math.max(innerWidth * 0.0375, 24)
Math.max
が、ユースケースでは三項演算子よりもうまく機能します。
startingNum = startingNum ? otherNum : 1
は" と表現できますstartingNum = otherNum || 1
が、誤りです。私はこれをテストしました
次のような三項を作成するには:
boolean_condition ? true_result : false_result
JavaScriptでは、次のことができます:
(boolean_condition && true_result ) || false_result;
例:
(true && 'green') || 'red';
=> "green"
(false && 'green') || 'red';
=> "red"
x = innerWidth * 0.0375 > 24 ? innerWidth * 0.0375 : 24
なります(innerWidth * 0.0375 > 24 && innerWidth * 0.0375) || 24
?innerWidth * 0.0375
変数に割り当てる以外に、繰り返す必要がないように省略形はありますか?
Math.max( innerWidth * 0.0375 , 24 )
エレガントに動作します。より一般的なケースでは、変数を作成するのではなく、読みやすさを向上させる「somethingifiedInnerWidth」などと呼ばれる説明的なメソッドを作成することをお勧めします。場合によっては、変数を(その説明的な名前で)持つ方が読みやすいかもしれませんが、将来的には、「なぜこれが乗算されるのですか?」発生しません。
Math.max
。超エレガントなソリューション!!