誰かがより良いコードスニペットを提供できるかもしれませんが||
、次の意味は何ですか?:
var time = $(el).data('start') || new Date();
それはor
演算子ですか?もしそうなら、変数が2つの異なる値を持つことができることはどのように意味がありますか?
誰かがより良いコードスニペットを提供できるかもしれませんが||
、次の意味は何ですか?:
var time = $(el).data('start') || new Date();
それはor
演算子ですか?もしそうなら、変数が2つの異なる値を持つことができることはどのように意味がありますか?
これはOR
オペレーターです。理解する必要があるのは次のとおりです。
非ブール値は、論理演算子で使用されるとブール値に変換されます。変換される値false
は「偽」と呼ばれ、変換される値は「真実」とtrue
呼ばれます。偽の値には、、、などが含ま0
れます。詳細については、JavaScriptで「真実と偽り:すべてが等しくない場合」を参照してください。undefined
null
OR
演算子は短絡します:それがであることがわかるまで式を評価し続けtrue
、それから停止します。
つまり、 「要素のデータにvar time = $(el).data('start') || new Date();
設定time
するか、それが偽の場合は現在の時刻を使用する」という意味です。start
el
exp1 || exp2
exp1を評価します。exp1が真の場合、exp2は評価されません(短絡評価と呼ばれます)。exp1がfalseを返す場合、exp2が評価されます。exp1またはexp2がtrueの場合、(exp1 || exp2)はtrueと評価されます。
ただし、Javascriptでは、演算子を使用して値を設定できます。
a = something
if (prop)
a = prop
次のように書き直すことができます
a = prop || something
'または'を意味します。この場合、の値を$(el).data('start')
変数に割り当てます。それtime
が存在しないか、代わりにを返す場合はfalse
、代わりにから返された値を割り当てますnew Date()
。または、Malovolioがより明確に指摘しているように、コメントで:
...if
$(el).data('start')
が"false"(つまり、undefined、null、0、false、空の文字列、またはNaN)の場合、new Date()
評価されてに割り当てられtime
ます。
論理演算子の重要な側面:
論理演算子は通常、ブール(論理)値で使用されます。そうである場合、ブール値を返します。ただし、&&と|| 演算子は実際には指定されたオペランドの1つの値を返すため、これらの演算子を非ブール値で使用すると、非ブール値を返す場合があります。
参照:
オペレーターのやり方|| 評価されるのは、最初の部分が真っぽい場合、それを返したということです。最初の部分が偽物である場合、2番目の部分を返します。したがって、上記の式は次の式と同等です。
if ($(el).data('start')) {
time = $(el).data('start');
} else {
time = new Date();
}
それはを意味しlogical sum
ます。または値がある場合はvar time = $(el).data('start') || new Date();
、関数からの値があります。$(el).data('start')
undefined
false
time
new Date