『JavaScriptチュートリアル』学習補遺(一)

7834 ワード

学習のチュートリアルアドレスは次のとおりです:JavaScriptチュートリアル
基本構文
変数宣言
  • 変数は、どの宣言でも最初の行に昇格します.
  • 変数は$ _および任意のUnicode文字で使用できますが、数字ではありません.
  • varは、複数の変数
  • を宣言することができる.
    var a, b = 1;
  • 行のコードが;しかない場合、空の文を表す.;;;は3つの空の文です.
  • 変数宣言に値が付与されていない場合、値はundefinedです.
  • ブロック{}は変数の役割ドメインを制限しない.

  • js htmlを使用したコメント
       html   
    

    jsは、例えば
    var x = 1;  x = 3;

    注意:
  • xの値は1です.
  • -->は行の先頭にいなければならず、単行注釈と見なされ、コードの真ん中に書かれている場合は--演算子と見なされる可能性があります.
  • function countdown(n) {
      while (n --> 0) console.log(n);
    }
    countdown(3);
    
        : 2 1 0
    while        n-- > 0

    じょうけんけってい
  • は、===ではなく==を優先的に使用して条件比較を行う.
  • if (x = 2) { //    ,        
    if (2 = x) { //   ,             
  • if...else...の構造は{}を使用することを提案します.そうしないと、elseは自動的に彼の最近の'if'とペアリングします.
  • if (m !== 1) {
      if (n === 2) {
        console.log('hello');
      }
    } else {
      console.log('world');
    }
    //       world
  • switch文の内部には「厳密に等しい演算子」が採用されており、タイプ変換は発生しません.
  • var x = 1;
    
    switch (x) {
      case true:
        console.log('x       ');
        break;
      default:
        console.log('x         ');
    }
    // x         

  • switchおよびcaseのいずれも、式
  • を用いることができる.
    switch (1 + 3) {
      case 2 + 2:
        f();
        break;
      default:
        neverHappens();
    }
  • forは式を書かなくてもよいが、は省略できない.
  • for ( ; ; ){
      console.log('Hello World');
    }
  • break文は、コードブロックまたはループから飛び出すために使用される.
  • continue文は、このループを直ちに終了し、ループ構造のヘッダに戻り、次のループを開始するために使用される.
  • 多重ループが存在する場合、パラメータを持たないbreak文およびcontinue文は、いずれも最内層ループのみを対象とする.
  • labelラベルは、通常、break文およびcontinue文と組み合わせて使用され、特定のループから飛び出します.
  • top:
      for (var i = 0; i < 3; i++){
        for (var j = 0; j < 3; j++){
          if (i === 1 && j === 1) break top;
          console.log('i=' + i + ', j=' + j);
        }
      }
    // i=0, j=0
    // i=0, j=1
    // i=0, j=2
    // i=1, j=0

    データ型
    ぶんかつ
  • 数値(number)、文字列(string)、ブール値(boolean)の3種類で、元のタイプ
  • と総称される.
  • オブジェクト(object)は最も複雑なデータ型であり、3つのサブタイプに分けることができる.
  • 狭義のオブジェクト(object)
  • 配列(array)
  • 関数(function)
  • undefinedおよびnullは、一般に2つの特殊な値と見なされる.
  • typeof演算子は、値のデータ型を返します.
  • typeof window // "object"
    typeof {} // "object"
    typeof [] // "object"
    typeof null // "object",          
    typeof undefined
    // "undefined"
    function f() {}
    typeof f
    // "function"
    typeof 123 // "number"
    typeof '123' // "string"
    typeof false // "boolean"
    nullおよびundefined
  • nullは空の値を表す;
  • undefinedは「未定義」を表し、
  • //      ,     
    var i;
    i // undefined
    
    //      ,           ,      undefined
    function f(x) {
      return x;
    }
    f() // undefined
    
    //          
    var  o = new Object();
    o.p // undefined
    
    //         ,     undefined
    function f() {}
    f() // undefined

    ブール値
  • ブール値変換規則は、次の6つの値がfalseに変換する以外は、trueとみなされる.
  • undefined
  • null
  • false
  • 0
  • NaN
  • ""または''(空の文字列)
  • 空の配列([])と空のオブジェクト({})対応するブール値は、いずれもtrue
  • すべての数字は64ビットの浮動小数点数の形で保存され、すべての数字は小数(64ビットの浮動小数点数)である.一部の演算は整数のみが完成する場合、64ビットの浮動小数点数を自動的に32ビットの整数に変換してから演算する.
  • 1 === 1.0 // true
  • 浮動小数点数が正確な値ではない
  • 0.1 + 0.2 === 0.3
    // false
    
    0.3 / 0.1
    // 2.9999999999999996
    
    (0.3 - 0.2) === (0.2 - 0.1)
    // false
  • 浮動小数点数の64個のバイナリビットは、一番左から、このように構成されています.
  • 第1位:符号位、0は正数、1は負数
  • を示す.
  • 位から12位(計11位):指数部
  • 13位から64位(52位):小数部(有効数字
  • )
  • 数値の精度-2^53から2^53
  • 数値範囲2^1024から2^-1023
  • NumberオブジェクトのMAX_VALUEプロパティとMIN_VALUEプロパティは、表すことができる特定の最大値と最小値を返します.
  • Number.MAX_VALUE // 1.7976931348623157e+308
    Number.MIN_VALUE // 5e-324
  • の数値は、字面量(十進法、十六進法、八進法、バイナリ)でもよいし、科学計数法
  • でもよい.
  • 10進数:先頭0の値がありません.
  • 8進数:接頭辞0oまたは0Oの数値、または先頭0、0-7までの8つのアラビア数字のみの数値.
  • 16進数:接頭辞0xまたは0Xの数値.
  • バイナリ:接頭辞0bまたは0Bの数値.
  • JavaScriptは自動的に数値を科学計数法(小数点前の数字は21桁より多い.小数点後のゼロは5個より多い.)に変換し、その他の場合は字面形式で直接表す.
  • のほとんどの場合、正と負のゼロは正常な0と見なされます.唯一の違いは、+0または-0が分母として扱われ、返される値は等しくありません.
  • (1 / +0) === (1 / -0) // false

    上のコードがこのような結果になったのは,正のゼロを除いて+Infinity,負のゼロを除いて-Infinityであり,両者は等しくないからである.
    NaN
  • NaNはJavaScriptの特殊な値で、「非数値」
  • を表す
  • 00で割るとNaNも得られる.
  • 0 / 0 // NaN
  • NaNは独立したデータ型ではなく、特殊な数値
  • である.
    typeof NaN // 'number'
  • NaNは、それ自体を含む任意の値に等しくありません.
  • NaN === NaN // false
  • 配列のindexOfメソッドの内部では厳密に等しい演算子が使用されるため、このメソッドはNaNに対して成立しない.
  • [NaN].indexOf(NaN) // -1 
  • NaNブール演算時にfalseとする.
  • Boolean(NaN) // false 
  • NaNと任意の数(それ自体を含む)の演算は、NaNを得る.
  • NaN + 32 // NaN
    NaN - 32 // NaN
    NaN * 32 // NaN
    NaN / 32 // NaN

    Infinity
    //    
    Math.pow(2, 1024) // Infinity,     ,      
    
    //    
    0 / 0 // NaN
    1 / 0 // Infinity, 0 0
    Infinity === -Infinity // false,     
    
    1 / -0 // -Infinity
    -1 / -0 // Infinity
    Infinity > 1000 // true,        
    -Infinity < -1000 // true,        
    Infinityは、NaNと比較して、常にfalseを返します.
    Infinity > NaN // false
    -Infinity > NaN // false
    
    Infinity < NaN // false
    -Infinity < NaN // false

    えんざんきそく
    5 * Infinity // Infinity
    5 - Infinity // -Infinity
    Infinity / 5 // Infinity
    5 / Infinity // 0

    0にInfinityを掛け、NaNを返し、0をInfinityで割って0を返し、Infinityを0で割ってInfinityを返します.
    0 * Infinity // NaN
    0 / Infinity // 0
    Infinity / 0 // Infinity
    InfinityInfinityを加算または乗算すると、Infinityが返されます.
    Infinity + Infinity // Infinity
    Infinity * Infinity // Infinity
    InfinityからInfinityを減算または除算してNaNを得た.
    Infinity - Infinity // NaN
    Infinity / Infinity // NaN
    Infinitynullで計算すると、nullは0に変わり、0との計算に等しい.
    null * Infinity // NaN
    null / Infinity // 0
    Infinity / null // Infinity
    Infinityundefinedは、NaNを返します.
    undefined + Infinity // NaN
    undefined - Infinity // NaN
    undefined * Infinity // NaN
    undefined / Infinity // NaN
    Infinity / undefined // NaN