JavaScriptの短縮:三元、論理的な


速く行かなければならない


Why waste time say lot word when few word do trick?


これはおそらく世界のプログラマの陰険なマントラです.あまりにも忙しいメインフレームにハッキングは、マルチ音節の変数名の時間がない.彼らは、長い風の式をキャッシュするために、彼ら自身の心で帯域幅を持ちません.彼らはむしろNayを使うでしょう、彼らは空から彼らのビットを狙うために、Terseをポイントに使用する必要があります.イーゼルで画家のように、脂っこいキーボードのプログラマは、重力プル、抵抗できない衝動、催眠サイレンの歌を感じます.速記式を使用します.
賢明なプログラマは、しばしば若いプログラマーにこの精神を採用しないよう警告します.それはケースで読むことが困難になることができます悪い習慣になることができる、維持するのは難しい、そしてコードを更新するのは難しい.それは、トピックの私の探査では、私は(私の喜びに)を発見するのに有用であることを発見した.このブログは、三項式とその接線いとこ-- AND AND OR演算子についてです.そして、どのように簡潔でありながら簡単なコードを書くことができますか.

三進式


三項式は、書くための簡潔な方法ですif else 文.
三進数式は、私を早めに投げました.の意味構造if else 声明は理解しやすい.この式が真を返す場合、この式を実行します.それが真実でないならば、この他の式を実行してください.なぜ壊れていない何かを修正?
Aの奇妙な構文? と末尾: 混乱していた.私は、コードの行を読むとき、それがあると思います? and : 簡単にテキストと数字の混乱で失われることができます.
平易な英語で、それの内訳はここにあります
これが本当ならば? こうする: そうしないと
3つの式の有用性は、変数に別の変数に依存する値を割り当てるために1行の方法を使用する場合に便利です.この3行を返しましょうisFullyCharged AStrue 我々のバッテリーレベルが100 %であるならば.
const batteryLevel = 26;
const isFullyCharged = batteryLevel == 100 ? true : false;

return isFullyCharged;
//false
として書き出されるif else ステートメントと、まだ新しいBoolean変数を返したいと仮定すると、それはずっと長くなります.
const batteryLevel = 26;
let isFullyCharged;

if (batteryLevel == 100){
  isFullyCharged = true;
} else {
  isFullyCharged = false;
}

return isFullyCharged;
三次式は、最初の奇妙な構文を克服することができれば、実際にはかなり読みやすい簡潔な1行のチェックに役立ちます.
そして、それらについてもっと読みましたので、入れ子になったチェックのようなより複雑な状況を簡素化することができますchained ternary expressions クリーナーでより少ないバグを起こしやすいコードの結果.

論理和代入


論理OR演算子は多くの点で使用することができますが、ここで議論するものは変数への代入前に値をチェックする方法としての使用です.
OR演算子|| , を返しますtrue or false 値.
The || 演算子は通常、どちらの側にも2つの式を取ります.次の例を挙げます.
let a = 5
let b = 1

return b > a || a > b
この短いプログラムはtrue or false boolean.OR演算子は左から右へ実行されます.ファーストb > a がtrueであることを確認します.この場合、b より小さいa , したがって、式はfalse . これを返すと|| 演算子は、式の値を右に返します.この場合、a > b 5が1より大きい数であるので、trueを返します.その結果、全体の式はtrueを返します.
それが論理的または代入に来るとき、値を確実にするためにチェッカーとして使われることができますそれを割り当てる前に空です.例えば、この例は:
let name

return name ||= "No name"
The ||= 演算子のみ代入name to "No name" if name 虚偽です.
このプログラムの出力は"no name "です.The ||= ShortRandは右側の値に代入する前に左の値がfalseであるかどうかを調べる方法です.この場合、name が宣言されているが未定義であるので、値undefined . JavaScriptではundefined は、値が偽の値であると見なされます.false . 左式がfalseの場合、右式が実行されます.
これは、name ||= "No name" 式は、非短縮コンポーネントに分離されます.その式はname || (name = "No name") !
これは繰り返しますが、次の2つの式は等価です.name :
name ||= "No name"

name || (name = "No name")
これは典型的な式や式によく似ています.本質的に、この速記はname は値を代入する前にfalsyです.これは、変数を上書きしたくない場合、または戻りたくない場合に便利ですundefined だけでなく、読みやすい文字列を返す.
使用||= 変数をOR式に代入することとは全く異なります.例えば、name = "No name" || "Other name が有効で、"No name" , しかし、それは||=

論理と代入


論理ANDは非常に似ています.代わりに&& , また、2つの値、1つの左と右の1つを取る演算子です.この場合、左と右の値は、返される2番目の値に対して真の値に変換する必要があります.さもなければ、最初の値が返されます.この評価は左から右に実行されます.左の値がfalsyに変わるならば、正しい値は決して評価されません、そして、全体と式はfalseを返します.しかし、両方とも真として実行されるなら、2番目の値は返されます.
例を挙げてください.
let name
name = '' && 'Bob';  // name is assigned ''
name = 'Bob' && 'Jill';   // name is assigned "Jill
最初の式では'' は空文字列で、falsyと見なされます.そして、全体と式は最初の値を返します.2番目の式ではname が割り当てられる'Jill' 両方の文字列'Bob' and 'Jill' TRUEを返します.両方ともtrueを評価するので、2番目の値が返されます.
さて、論理と代入に進みます.
let name
let lastname = "Exists"
name &&= "Tywen"
lastname &&= "Kelly
それが論理AND割り当てに関して&&= , 式は代入するだけですname to "Tywen" 名前が真ならば.name が定義されていないので、実際にはfalsyです"Tywen" . lastname 一方、真の価値は"Exists" , それで、論理と割り当てでそれを割り当てる時間が来るとき、それは首尾よくそれを割り当てます"Kelly" .