TEST12138

TEST12138

长路漫漫,唯心作伴。

前端jsの&&と||

不要百度和コーディングテスト
最初の質問、以下の 2 行のコードの出力は何ですか

console.log(1<2 && 4>5)
console.log(1<2 || 4>5)

2 番目の質問、以下の 2 行のコードの出力は何ですか

console.log(2 && 4)
console.log(2 || 4)

もしこのような問題についてわからない場合、&& と || の演算プロセスがわかっていないことを意味します
それらの演算プロセスはどのようになりますか
以下の図を見てください

image

例えば、console.log(2 && 4)では、2 と 4 はどちらも true です

console.log( 2   &&  4  )
            true && true

結果は最後に判定されたデータを返します。4 は後に判定されるので、4 が返されます
確認してみましょう

image

console.log(2 || 4)はどのように計算されますか
判定を先に行い、2 は true です。|| 演算では 1 つが真であればよいため、後ろの 4 を判定する必要はありません
結果は最後に判定されたデータを返します。したがって、2 が返されます
確認してみましょう

image

では、実際の開発ではどのように使用するのでしょうか

例えば、次のようなオブジェクトがあるとします
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()

これについては皆さん自身で考えてみてください

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。