JavaScript)タイプ変換とショートカット評価


タイプ変換と迅速な評価


1-1. タイプ変換とは?


JavaScriptのすべての値にタイプがあります.値のタイプは、開発者の意図に応じて他のタイプに変換できます.開発者が意図的に値を変換するタイプを、明示的なタイプ変換またはタイプ鋳造と呼びます.
// 명시적 타입 변환

var x = 10;

// 숫자를 문자열로 타입 캐스팅한다.
var srt = x.toString();
console.log(typeof str, str) // string 10

// x 변수는 그대로이다.
console.log(typeof x, x) // number 10
開発者の意図に関係なく,式を評価する過程でJavaScriptエンジンによって黙々とタイプが自動変換されることがある.これをサイレントタイプ変換またはタイプ強制変換と呼びます.
// 암묵적 타입 변환

var x = 10;

var str = x + '';
console.log(typeof str, str) // string 10

// x 변수는 그대로이다.
console.log(typeof x, x) // number 10
元の値は変更できない値なので変更できません.タイプ変換は、既存の元の値を使用して他のタイプに新しい元の値を生成します.
自分で作成したコードで暗黙的なタイプ変換が発生したかどうか、変換が発生した場合、どのタイプの値に変換されるか、タイプ変換後の値で式を評価する方法を予測する必要があります.タイプ変換の結果が予測できないか、予測が結果と一致しない場合は、エラーが発生する可能性があります.

1-2. 迅速な評価


論理和(|)または論理乗(&&)演算子式は、常に2つの被演算子のいずれかとして計算されます.

1.論理演算子による迅速な評価

'Cat' && 'Dog' // "Dog"
論理乗算子は、両方の被演算子が真である場合にtrueを返します.論理乗算演算子は、左から右へ評価されます.上記の式は、2番目の演算子によって式の評価結果が決定されます.このとき、論理乗算子は、論理演算結果を決定する2番目の被演算子である文字列「Dog」を返す.
'Cat' || 'Dog' // "Cat"
論理演算子は、2つの被演算子のうち1つの真値のみがtrueを返します.論理演算子も左から右へ評価する.上記式は、2番目の被演算子に計算する必要がなく、上記式を計算することができる.論理演算子は、論理演算結果を決定する最初の被演算子、すなわち文字列「Cat」を返します.
論理乗算演算子と論理連結演算子は、タイプを変換するのではなく、論理演算結果を決定する被演算子を直接返します.これをショートカット評価といいます.クイック評価とは、評価式の過程において、評価結果が確定した場合、残りの評価過程を省略することをいう.

2.光学フィルタ演算子


ES 11に導入された傍観者フィルタ演算子.左の演算子がnullまたはundefinedの場合、undefinedが返されます.そうしないと、右のproperty参照が続行されます.
var elem = null;

// elem이 null 또는 underfined이면 underfined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어간다. 
var value = elem?.value;
console.log(value); // underfinde
傍観者切寧演算子?オブジェクトを指す変数がnullまたはunderfinedではないと判断し、propertyを参照する場合に便利です.

3.連結ULL演算子


ES 11が導入したnull連結演算子?左の被演算子がnullまたはunderfinedの場合、右の被演算子が返されます.そうでない場合、左の被演算子が返されます.
// 좌항의 피연산자가 null 또는 underfined이면 우항의 피연산자를 반환하고,
// 그렇지 않으면 좌항의 피연산자를 반환한다.
var foo = null ?? 'default string';
console.log(foo) // "default string"
null連結演算子?変数のデフォルト値を設定すると便利です.
モダンJavaScript Deep Diveを読んでまとめた文章.😊