現代JavaScript Deep Dive 9章-タイプ変換と迅速評価
2754 ワード
タイプ変換とは?
隠しタイプ変換
コードのコンテキストを考慮して、デフォルトの強制変換データ型
文字列タイプに変換
+:被演算子に文字列がある場合は、文字列接続演算子であり、すべての被演算子が文字列の暗黙的なタイプに変換されます.
0 + '' // '0'
null + '' // 'null'
[1,2,3,4] + '' // '1,2,3,4'
数値タイプに変換
+'' // 0
+undefined // NaN
+{} // NaN
+[] // 0
+[1,2,3] // NaN
ブール型に変換
6個の
明示的なタイプ変換
呼び出し
文字列タイプに変換
String(100);
(100).toString();
100 + '';
数値タイプに変換
Number('100');
parseInt('100');
parseFloat('3.14');
+'100';
'100' * 1;
ブール型に変換
!!값
!!0 // false
Boolean({}) // true
Boolean([]) // true
迅速な評価
論理演算子による迅速な評価
評価結果が
true && anything // anything
false && anything // false
true || anything // true
false || anything // anything
デフォルトはconst sayHi = (name) => {
name = name || '사용자';
console.log(`안녕하세요 ${name}님`);
}
// es6 기본값 설정
const sayHi2 = (name='사용자') => {
console.log(`안녕하세요 ${name}님`);
}
sayHi(); // 안녕하세요 사용자님
関数を呼び出すときにパラメータがない場合は、未定義として指定します.let elem = null;
let value = elem.value // null인데 프로퍼티 참조하면 에러남
let value = elem && elem.value // value는 null 할당, 에러 안남
光学フィルタ演算子
?.
左端の演算子が未定義or nullの場合、未定義の
または右航propertyに戻ります
&&を使用してPropertyリファレンスエラーを防止できますが、次の場合は問題が発生します.
let name = '';
let length = name && name.length; // length는 ''가 됨, 문제발생
let length = name?.length // length 는 0
空の連結演算子
??
左項目の演算子が未定義or nullの場合、右項目を返します.
さもないと左港に戻ります
変数のデフォルト設定に使用可能
||も可能ですが、値が0の場合falsey値となりますので問題が発生します
let age = 0 || 20 // 0살을 원했는데 0이 falsy한 값이니 age=20이 됨
let age = 0 ?? 20 // age=0
Reference
この問題について(現代JavaScript Deep Dive 9章-タイプ変換と迅速評価), 我々は、より多くの情報をここで見つけました https://velog.io/@hustlekang/모던-자바스크립트-Deep-Dive-9장-타입-변환과-단축-평가テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol