JavaScript高級プログラム設計(第3版)ノート

7487 ワード

第三章基本概念
3.1文法
3.1.1大文字と小文字を区別する
3.1.2識別子
  • は、変数、関数、属性の名前、または関数のパラメータです.
  • 命名規則:
  • 最初の文字はアルファベット、アンダースコア、ドル記号でなければなりません.
  • 他の文字は、アルファベット、アンダースコア、ドル記号または数字とすることができます.
  • 慣例としては、ラクダの命名法が使われています.
  • 3.1.4厳格モード"use strict"3.1.5文
  • は、語句の終わりにセミコロンを追加することを推奨している(ある場合、コードネームの推測セミコロン位置を回避し、コードの性能を向上させている)
  • コードブロック({})の使用を推奨します.if文など、読みやすく、エラー率を低減します.
  • 3.2キーワードと保持ワード
    3.3変数
  • は変数を定義していますが、値が与えられていない場合、変数はundefined
  • を保存します.
    var msg;
    console.log(msg);  //undefined
    
  • varオペレータによって定義される変数は、その変数を定義する作用領域における局所変数となる.つまり、関数でvarを使って変数を定義すると、この変数は関数が終了した後に破棄されます.
  • function test(){
                var a = 1; //     
            }
            test();
            console.log(a); // Uncaught ReferenceError: a is not defined
    
  • は、varオペレータを省略してグローバル変数を作成する.おすすめはありません.
    function test2(){
                 b = 1; //     
            }
            test2();
            console.log(b); // 1
    
  • 複数の変数を一つの文で定義する
  • //             
            var a = "hello";
                b = "world";
            console.log(a); // hello
            console.log(b); // world
    
    3.4データタイプ
  • 5種類の基本データタイプ:Unidefined、Null、Boolean、Number、String
  • 1種の複雑なデータタイプ:Objectは、無秩序な名前値ペアのセットから構成される.
  • 3.4.1 typeof操作符
    3.4.2 Unidefinedタイプ
    一つの値しかないです.すなわち特殊なundefinedです.
  • 初期化されていない変数と宣言されていない変数に対して、typeofオペレータ
  • を実行します.
    // typeof
            var c = 123;
            var d;  //       
            var e   //      
            console.log(typeof(c)); // number
            console.log(typeof(d)); // undefined
            console.log(typeof(e)); // undefined
    
  • は、初期化されていない変数および未宣言の変数に対してconsolie.logまたはalertを実行する.今のブラウザでは教科書の紹介と違って、undefined
  • が印刷されます.
            var c = 123;
            var d;  //       
            var e   //      
            // console.log(typeof(c)); // number
            // console.log(typeof(d)); // undefined
            // console.log(typeof(e)); // undefined
            alert(c); // 123
            alert(d); // undefined
            alert(e); // undefined
    
    3.4.3 Nullタイプ
    この特殊な値は一つの値しかありません.nullです.オブジェクトの空のポインタを表します.これもtypeofオペレータを使って、null値を検出して、objectに戻る原因です.console.log(typeof null); // object
  • undefined値はnull値から派生されるので、console.log(null == undefined); // true
  • 定義された変数が将来オブジェクトを保存するために準備されている場合、この変数をnullに初期化したほうがいいです.このようにすると、null値を直接確認すれば、対応する変数がオブジェクトの参照を保存しているかどうかを知ることができます.
  • if(car != null) {
                //  car        
            }
    
    3.4.4 Booleanタイプ
    二つの値:trueとfalse
  • は、1つの値をその対応するBoolean値に変換するために、変換関数Boolean()
  • を呼び出すことができる.
            var message = "hello";
            var message2 = Boolean(message);
            console.log(message2); // true
    
  • データタイプ変換規則
  • データの種類
    trueの値に変換
    flaseの値に変換
    ボロア
    true
    false
    String
    空の文字列以外
    '(空の文字列)
    Object
    任意のオブジェクト
    null
    Number
    ゼロ以外の数値
    0またはNaN
    Udefined
    n/a(not appicabkeは適用されません)
    undefined
  • 制御文は、対応するBoolean変換を自動的に実行する.
  • var msg = "hello world"
            if(msg){            // msg -> true
                console.log("  ") //   
            }
    
    3.4.5 Numberタイプ
  • 8進数:1桁目は0、8進数数字系列(0-7)でなければなりません.ワード面の値が範囲を超えている場合、プリアンブル0は無視され、後の値は10進数の数値として解析されます.
  •         var num1 = 070;
            var num2 = 079;
            var num3 = 08;
            console.log(num1); //56
            console.log(num2); //79
            console.log(num3); // 8
    
  • 8進数字面量は、厳密なモードでは無効です.
  • 六進数字の面の値の前の二桁は0 xでなければなりません.後の任意の十六進数(0-9及びa-f)a-fは大文字でも小文字でもいいです.
  •         var num4 = 0xA;
            var num5 = 0x1f;
            console.log(num4); // 10
            console.log(num5); // 31
    
  • 浮動小数点数
  •       //     
            var num6 = 1.1;
            var num7 = 0.1;
            var num8 = .1;  //    
            console.log(num6); // 1.1
            console.log(num7); // 0.1
            console.log(num8); // 0.1
    
  • 浮動小数点の数値が占めるメモリは整数の2倍です.
  •         var num9 = 1.;
            var num10 = 10.0;
            console.log(num9); // 1
            console.log(num10); // 10
    
  • 0.1プラス0.2の結果は0.3
  • ではありません.
    console.log(0.1+0.2); // 0.30000000000000004
    
  • 数値範囲
  • ECMAScriptで表し得る最小値はNumber.MIN_に保存されています.VALEの中で、多くのブラウザの中で、この値は5 e-324です.
  • ECMAScriptで表示できる最大値はNumber.MAX_に保存されています.VALEでは、多くのブラウザにおいて、この値は1.7976931348623157 e+308である.
  •  var result = Number.MAX_VALUE + Number.MAX_VALUE;
            console.log(isFinite(result)); // false
            console.log(Number.MIN_VALUE); // 5e-324
            console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
    
  • NaN
  • 非数値(Not a Number)は、本来返すべき数値の動作数が数値に戻らない場合を表します.ECMAScriptでは、任意の数値を非数値で割るとNaNに戻り、他のコードの実行に影響を与えません.
  • NaNに関する任意の動作はNaNに戻る.
  • NaNは、NaN自体を含むいかなる値とも等しくない.
  • console.log(NaN == NaN); // false
    
  • isNaN()関数はパラメータを受信し、このパラメータを数値に変換する試みを行う.いくつかの数値ではない値は直接数値に変換され、falseを返します.例えば、文字列「10」またはBoolean値です.数値に変換できない値はいずれもこの関数がtrueに戻ります.
  •       //         ,  ?
            console.log(isNaN(NaN)); // true
            console.log(isNaN(10));  // false
            console.log(isNaN("10")); // false
            console.log(isNaN("blue")); // true
            console.log(isNaN(true)); // false
    
  • 数値変換
  • 非数値変換値:Number()(任意のデータタイプ用)、parseInt()(文字列を数値に変換するためのもの)、parseFloat()(文字列を数値に変換するためのもの)
  • Number()(任意のデータタイプのための)関数の変換規則:
  • Boolean値なら、true-->1、false-->0.
  • 数字であれば、簡単に伝わってきます.
  • は、null値であれば、0を返します.
  • はundefinedであれば、NaNに戻る.
  • 文字列であれば.
  •         var num1 = Number("hello");
            var num2 = Number("");
            var num3 = Number("0001");
            var num4 = Number(true);
            console.log(num1); // NaN
            console.log(num2); // 0
            console.log(num3); // 1
            console.log(num4); // 1
    
  • parseInt()
  •        var num1 = parseInt("123hello");
            var num2 = parseInt("");
            var num3 = parseInt("0001");
            var num4 = parseInt(true);
            var num5 = parseInt(22.5);
            var num6 = parseInt("0xaf",16);
            console.log(num1); // 123
            console.log(num2); // NaN
            console.log(num3); // 1
            console.log(num4); // NaN
            console.log(num5); // 22
            console.log(num6); // 175
    
  • parseFloat()
  •         var num1 = parseFloat("123blue");
            var num2 = parseFloat("0xa");
            var num3 = parseFloat("22.5");
            var num4 = parseFloat("22.31.5");
            var num5 = parseFloat("0908.5");
            var num6 = parseFloat("3.125e7");
            console.log(num1); // 123
            console.log(num2); // 0
            console.log(num3); // 22.5
            console.log(num4); // 22.31
            console.log(num5); // 908.5
            console.log(num6); // 31250000
    
    3.4.6 Stringタイプ
  • は、0ビット以上の16ビットのUnicode文字からなる文字列を表すために使用される.二重引用符または単引用符で表します.
  • 文字の字面量
  • 文字列の特徴
  • は文字列toString()方法に変換され、対応する値の文字列の変形を返します.
  •     var age = 10;
        var ageA = age.toString(age);
        console.log(ageA); // "10"
        console.log(typeof ageA); // string
        console.log(typeof age); // number