不要百度和コーディングテスト
最初の質問、以下の 2 行のコードの出力は何ですか
console.log(1<2 && 4>5)
console.log(1<2 || 4>5)
2 番目の質問、以下の 2 行のコードの出力は何ですか
console.log(2 && 4)
console.log(2 || 4)
もしこのような問題についてわからない場合、&& と || の演算プロセスがわかっていないことを意味します
それらの演算プロセスはどのようになりますか
以下の図を見てください
例えば、console.log(2 && 4)
では、2 と 4 はどちらも true です
console.log( 2 && 4 )
true && true
結果は最後に判定されたデータを返します。4 は後に判定されるので、4 が返されます
確認してみましょう
console.log(2 || 4)
はどのように計算されますか
判定を先に行い、2 は true です。|| 演算では 1 つが真であればよいため、後ろの 4 を判定する必要はありません
結果は最後に判定されたデータを返します。したがって、2 が返されます
確認してみましょう
では、実際の開発ではどのように使用するのでしょうか
例えば、次のようなオブジェクトがあるとします
var obj = {}
これは他の場所から来たもので、このオブジェクトにどのようなプロパティがあるかわかりません
このオブジェクトからプロパティ a を読み取りたいとします
私の要件は、a に値があれば a を読み取り、値がない場合はデフォルト値を設定することです
通常の書き方では次のようになります
var a = obj.a
if(!a) {
a='default'
}
|| を使用する場合は、次のようになります
var a = obj.a || 'default'
コードがはるかに簡潔になります
判定の流れに基づいて、obj.a に値がある場合、true が返され、結果は最後に判定されたデータであるため、a = obj.a となります
obj.a に値がない場合、次に判定が行われ、'default' は true を返すため、a = 'default' となります
また、obj に関数があるかどうかを知りたい場合、それを呼び出します
通常の書き方は次のようになります
if(obj.func) {
obj.func()
}
&& を使用する場合は次のようになります
obj.func && obj.func()
これについては皆さん自身で考えてみてください