Usestrict(厳格モード)

2920 ワード

なぜUse Strictを使うのか


  • JavaScript環境では、エラーをエラーに変換します.

  • javascriptの不正な構文を事前に検出できます.
    (プロファイルの定義の書き込みを禁止し、getterプロファイルのみ、存在しないプロファイル、存在しない変数、および存在しないオブジェクトにエラーが発生します.)
  • UseStrictの適用


    1.アプリケーションコードの前

    "use strict"
    
    let v = "use strict example";

    2.関数への適用

    function strict(){
     'use strict';
      function online() {return "hi my name is bohun"}
      }

    3.strictモードで許可されていない構文

  • 未定義の変数を使用
    :x=3という変数を入力すると、グローバルオブジェクトに新しいプロパティが作成され、厳格なモードで操作され、エラーが発生します.
  • 'use strict'
    x = 3 //index.js:3 Uncaught ReferenceError: x is not defined
    
  • 削除不可のプロパティを削除しようとしたとき
  • 'use strict'
    x = 3 
    delete x //Delete of an unqualified identifier in strict mode
  • 関数パラメータ重複名
  • 'use strict'
    function code(x1 ,x1){}; //Duplicate parameter name not allowed in this context 
  • 8進数
  • 'use strict'
    let x = 010; //Octal literals are not allowed in strict mode.
  • 読取り専用プロパティ設定値
  • "use strict"; 
    var obj = {};
    
    Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14;    
    
    //Cannot assign to read only property 'x' of object '#<Object>'
  • クエリー専用のプロパティ値
  • を設定します.
    "use strict"; 
    var obj = {get x() {return 0} }; obj.x = 3.14;  
    
    // TypeError: Cannot set property x of #<Object> which has only a getter
        at index.js:2
  • eval、パラメータ文字列用変数
  • "use strict"; 
    let eval = 3.14;         
    let arguments = 3.14;
    
    // Unexpected eval or arguments in strict mode
  • を使用
    "use strict"; 
    with (Math){x = cos(2)};
    
    //Strict mode code may not include a with statement
  • eval()に定義された変数
  • を使用します.
    "use strict"; 
    eval ("var x = 2"); 
    alert (x);
    
    // x is not defined
    ソース:
    1. https://www.w3schools.com/js/js_strict.asp
    2. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Strict_mode