回答:
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値とともに使用すると、いずれかのオペランドがである場合に||戻ります。両方の場合、を返します。truetruefalsefalse
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。超エレガントなソリューション!!