JavaScript に「null 合体」演算子はありますか? 質問する

JavaScript に「null 合体」演算子はありますか? 質問する

Javascript には null 合体演算子がありますか?

たとえば、C# では次のように実行できます。

String someString = null;
var whatIWant = someString ?? "Cookies!";

私が Javascript で理解できる最良の近似方法は、条件演算子を使用することです。

var someString = null;
var whatIWant = someString ? someString : 'Cookies!';

これは個人的にはちょっと気持ち悪いと思います。もっといい方法はないでしょうか?

ベストアンサー1

アップデート

JavaScriptがサポートされるようになりましたヌル合体演算子 (??)左側のオペランドがnullまたはの場合は右側のオペランドを返しundefined、それ以外の場合は左側のオペランドを返します。

古い回答

ご使用前に互換性をご確認ください。


C# の null 合体演算子 ( ) に相当する JavaScript は、??論理 OR ( ||) を使用します。

var whatIWant = someString || "Cookies!";

動作が C# の動作と一致しない場合もあります (以下で説明します) が、これは JavaScript で既定値や代替値を割り当てる一般的な簡潔な方法です。


説明

最初のオペランドの型に関係なく、それをブール値にキャストした結果が になる場合false、割り当てでは 2 番目のオペランドが使用されます。以下のすべてのケースに注意してください。

alert(Boolean(null)); // false
alert(Boolean(undefined)); // false
alert(Boolean(0)); // false
alert(Boolean("")); // false
alert(Boolean("false")); // true -- gotcha! :)

これはつまり:

var whatIWant = null || new ShinyObject(); // is a new shiny object
var whatIWant = undefined || "well defined"; // is "well defined"
var whatIWant = 0 || 42; // is 42
var whatIWant = "" || "a million bucks"; // is "a million bucks"
var whatIWant = "false" || "no way"; // is "false"

おすすめ記事