JavaScriptで論理演算子を使用すると短絡評価がどのように機能するのか理解していますが、私は完全には奇妙なエッジケースわかる。 a
と短絡論理または文、インライン三項と組み合わせて
const a = 'a' || 'b';
が'a'
の値を有する:
ので、このスニペットは、私が期待するように動作します。
そしてもちろん
、これも私が期待するように動作します:a
と
const a = false || 'b';
が'b'
の値を持ちます。
しかし、私はこのような表現で、この奇妙な状況に遭遇しました:
const a = true || true || true ? 'a' : 'b';
a
は今'a'
の値を持っています。
const a = true || false || true ? 'a' : 'b';
とa
まだ'a'
の値を持っている:私のような他の組み合わせは、試してみました。しようとする
もう一つは、このようなものです:
const fn =() => true ? 'a' : 'b';
const a = true || fn();
そしてもちろんa
のtrue
の値を持ち、かつfn
が呼び出されることはありません。
ここでは何が起こっていますか?
操作の順序... 'true ||真実||本当ですか? 'a': 'b''は '(true || true || true)と等価ですか? 'a': 'b'' – JJJ