09.タイプ変換と迅速な評価


2022.04.05.水曜日


09.タイプ変換と迅速な評価


9.1タイプ変換とは?


:既存の元の値を使用して、他のタイプの新しい元の値を作成します.

9.2デフォルトのタイプ変換


:JavaScriptエンジンは、式を評価する際に、開発者の意図にかかわらず、コードのコンテキストを考慮してデータ型を黙々と強制的に変換することがあります.
  • 文字列タイプに変換
    :+文字列と演算子を使用する場合、すべての被演算子はコードコンテキストで文字列タイプでなければなりません.文字列タイプ変換が発生します.
  • 0 + '' // 0
    -0 + '' // 0
    NaN + '' // NaN
    Infinity + '' // Infinity
    
    true + '' // true
    false + '' // false
    
    null + '' // null
    
    undefined + '' // undefined
    
    (Symbol()) + '' // TypeError
  • デジタルタイプに変換
    :算術演算子、比較演算子、単項演算子を使用すると、数値タイプ変換が発生します.
  • ※",[],null,falseを0,true 1に変換して、存在するオブジェクトまたは空でない配列、未定義のNANを返します.
  • ブールタイプに変換
    :JavaScriptエンジンは、ブール以外のタイプの値をTruthy値またはFalse値に区別します.
  • Falsy値:false、undefined、null、0/-0、NaN、"(文字列)
  • Truthy値:Falsy以外のすべての値の
  • 9.3明示的なタイプ変換


    :開発者の意図に基づいてタイプを明示的に変更する方法

  • 文字列タイプに変換
  • 新しい演算子なしでStringコンストラクタを呼び出す方法
  • Object.prototype.TOStringメソッド
  • を使用
  • 文字列を使用して演算子を接続する方法
  • // 1. 
    String(1);
    String(NaN); 
    String(Infinity)
    String(true)
    String(false)
    
    // 2. 
    (1).toString(); 
    (NaN).toString();
    (Infinity).toString(); 
    (true).toString();
    (false).toString(); 
    
    // 3. 
    1 + ''; 
    NaN + '';
    Infinity + ''; 
    true + ''; 
    false + ''; 

  • 数値タイプに変換
    新しい演算子なしで
  • 番号生成器関数を呼び出す方法
  • ParseInt、ParseFloat関数(文字列のみ)
  • の使用方法
  • +単項演算子を使用する方法
  • *算術演算子
  • の使用方法
    // 1. 
    Number('0'); 
    Number('10.53'); 
    
    // 2. 
    parseInt('0'); 
    parseFloat('10.53'); 
    
    // 3. 
    +true;
    +false;
    
    // 4. 
    '0' * 1; 
    '-1' * 1; 

  • ブール型に変換
    新しい演算子なしで
  • Booleanコンストラクタを呼び出す方法
  • ! 2回の否定論理演算子
  • を使用
    // 1.
    Boolean('x'); 
    Boolean('false'); 
    Boolean([]); 
    
    // 2. 
    !!'x'; 
    !!'false'; 
    !!null;

    9.4迅速な評価

  • 論理演算子による迅速な評価
    :2つの演算子で、一方に計算されると、対応する値が返されます.
  • 'Cat' && 'Dog' // 'Dog'
    'Cat' || 'Dog' // 'Cat'
    false && anything // false
    ※クイック評価:評価過程で評価結果が確定した場合、残りの評価過程は省略する.

  • 適用
    
    var done = true; 
    var message = ''; 
    
    message = done && '완료'; 
    /* =======================* */
    
    var done = false; 
    var message = ''; 
    
    message = done || '미완료';
    /* =======================* */
    
    var done = true; 
    var message = ''; 
    
    message = done ? '완료' : '미완료'; 
    

  • オブジェクトを指す変数がnullまたはundfeedではないことを確認し、Propertyを参照します.
    var element = null; 
     var value = element && element.value; 

  • 関数パラメータにデフォルト値を設定する場合
    function getStringLength(str='') {
    	return str.length; 
    }
    //ES6의 매개변수의 기본값 설정
  • キャリーフィルタ演算子
    :ES 11に導入された傍観者フィルタ演算子.左の演算子がnull、undefinedの場合、undefinedが返されます.そうしないと、右のproperty参照が続行されます.
  • var element = null; 
    var value = element?.value; // undefined
  • null連結演算子
    :ES 11に導入されたnull連結演算子?左の被演算子がnullの場合、右の被演算子が返されます.そうでない場合、左の被演算子が返されます.
  • var foo = null ?? 'default string'; // 'default string'