web-dev-qa-db-ja.com

JavaScriptでのRubyの|| =(または等しい)?

Rubyの||=メカニズムが大好きです。変数が存在しない場合、またはnilである場合は、変数を作成して、何かに等しく設定します。

amount # is nil
amount ||= 0 # is 0
amount ||= 5 # is 0

JavaScriptで同様のことをする必要があります。これを行うための慣習または適切な方法は何ですか? ||=は有効な構文ではないことを知っています。それを処理する2つの明白な方法は次のとおりです。

window.myLib = window.myLib || {};

// or

if (!window.myLib)
  window.myLib = {};
111
at.

どちらも絶対に正しいですが、Rubyで||=のような機能を探している場合。 variable = variable || {}である最初のメソッドは、あなたが探しているものです:)

128
nXqd

論理的なOR演算子||を使用して、lValが偽の値である場合に正しいオペランドを評価できます。

偽の値には、_null, false, 0, "", undefined, NaNなどが含まれます

x = x || 1
20
Moritz Roessler

オブジェクトを使用している場合、次のように(ES6以降)構造化を使用できます。

({ myLib: window.myLib = {} } = window);

...しかし、混乱を除いて、受け入れられた答えよりも何も得られません。

4
Inkling