1. ホーム
  2. javascript

[解決済み] JavaScriptに「NULL合体」演算子はありますか?

2022-03-19 23:32:48

質問

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

例えば、C#では、こんなことができます。

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

Javascriptで考えられる最も良い近似は、条件演算子を使うことです。

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

IMHOでは、sorta ickyです。もっといい方法はないでしょうか?

解決方法は?

更新情報

JavaScript が nullish合体演算子 (??) . これは、左辺のオペランドが次のような場合、右辺のオペランドを返します。 null または undefined それ以外の場合は、左辺のオペランドを返します。

古い答え

互換性をご確認の上、ご利用ください。


C# の null 合体演算子 ( ?? ) は、論理 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"