厳密モード: ECMA-262 仕様によって定義された JavaScript 標準では、JavaScript に対してより強力な制限があります。この記事では主に Javascript の strict モードの use strict について詳しく説明します。必要な友達は参考にしてください。
Strict モード: ECMA-262 仕様で定義された JavaScript 標準には、JavaScript に対する制限が強化されています。
(非厳密モードは「sloppy モード/sparse モード/lazy モード」と呼ばれます。)
1. strict モードの使用
strict モードはスクリプトまたは関数レベルで実装できます。 (つまり、グローバル モードとローカル モード)
1. Global
js ファイルの先頭に「use strict」を追加します
2. Local
次のように関数内に「use strict」を追加します
function fn() { "use strict"; //some code }
2. 厳密モードと非厳密モードの比較
1. 厳密モードでは、変数を削除できません (delete は非修飾識別子です)。非厳密モードでは、削除に失敗すると false"use strict"; var x; delete x;//报错Delete of an unqualified identifier in strict mode.(不合格的标识符)
。
function fn(a,a){ "use strict"; result=a+a; console.log(result); } fn(2,4);//Duplicate parameter name not allowed in this context(重复的参数名称在此上下文中不允许)
function fn1(a,a){ "use strict"; result=a+a; console.log(result); } fn1(2,4);//结果为8
"use strict" var x=089; console.log(x);//报错:Decimals with leading zeros are not allowed in strict mode.
fn(5); function fn(a){ "use strict"; a = 42; // return a==arguments[0];//返回false console.log(a);//结果为42 console.log(arguments[0]);//结果为5,严格模式下arguments[0]表示这个调用方法的第一个参数 (不再追踪 参数的变化,在函数内部,参数a被重新赋值为42,但arguments[0]仍然为5.) }
fn(5); function fn(a){ a = 42; // return a==arguments[0];//返回true console.log(a);//结果为42 console.log(arguments[0]);//结果为42(追踪参数变化) }
"use strict"; var eval=3;//报错:Unexpected eval or arguments in strict mode var argument=6;//同样报错
"use strict"; function fn(n){ if(n==0){ return 1; }else{ return n*arguments.callee(n-1); } } console.log(fn(5));//报错
function fn(n){//阶乘 if(n==0){ return 1; }else{ return n*arguments.callee(n-1); } } console.log(fn(5));//正常120
"use strict" function fn1() { var n1= fn1.caller; console.log(n1); } function fn2() { fn1(); } fn2();//报错
function fn1() { var n1= fn1.caller;//此例中caller指向调用它的函数(fn2) console.log(n1); } function fn2() { fn1(); } fn2();// 结果打印出:function fn2(){ fn1( ) };
"use strict"; with(obj){ x; }//报错:Strict mode code may not include a with statement
with(object instance) { //代码块 } eg:function Clothes(){ this.color="red"; this.size="m"; this.price="cheap"; } var c1=new Clothes(); with(c1){ var str="颜色:"+color+",尺寸:"+size+",价格:"+price; document.write(str); }//结果(颜色:red,尺寸:m,价格:cheap)
strict モードでは、null 未定義の apply パスを呼び出し、そのままウィンドウに変換
以上がJavascript チュートリアルの strict strict モードの使い方の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。