ホームページ >ウェブフロントエンド >jsチュートリアル >プロジェクトで JS strict モードを使用する方法
今回は、プロジェクトで JS strict モードを使用する方法と、プロジェクトで JS strict モードを使用する際の 注意事項 について説明します。実際のケースを見てみましょう。
厳密モードとは何ですか?
JSコーディングをより標準化し、Javascript構文の不合理で緩い部分を取り除き、いくつかの奇妙な動作を減らすモードです
使い方は?
次の文字列を追加するだけです。この構文は下位互換性があり、厳密モードをサポートしていない JavaScript エンジンの場合は、直接未割り当ての文字列リテラルとみなされ、エンジンは厳密モードをオンにします。'use strict'
function doSomething(){ 'use strict' // 其他代码 }
変数
1. 厳密モードで変数を作成するタイミングと方法には制限があります。 まず、非厳密モードでは、グローバル変数を誤って作成することはできません。次のようにグローバル変数を作成しますが、厳密モードでは不可能です// 宣言されていない変数2.変数名にも制限があります。特に、implements、interface、let、package、private などの予約語を変数名として使用すると、// 非厳密モード: グローバル変数を作成します
// 厳密モード: ReferenceError エラーをスローします
構文エラー が発生します。
オブジェクト
厳密モードでのオブジェクトの操作は、非厳密モードよりもエラーが発生する可能性が高くなります。読み取り専用属性に値を割り当てると、構文エラーが発生します1。 TypeError2. 属性に delete 演算子を使用すると、TypeErrorがスローされます。3. 拡張不可能なオブジェクトに属性を追加すると、TypeErrorFunction
がスローされます。名前付き// 重命名参数的 // 非严格模式:没有错误,只能访问第二个参数,如果要访问第一个参数,就必须通过arguments // 严格模式语法错误 function sum(num,num){ //do something }引数オブジェクトの動作も厳密モードでは異なります。厳密モードでは、名前付きパラメータの値の変更は引数オブジェクトにも反映されます。 、ただし、厳密モードでは、これら 2 つの値は完全に独立しています
function showValue(value){ value = 'foo' console.log(value) console.log(arguments[0]) // 非严格模式 : 'foo' 严格模式 :'hello' } showValu('hello')
関数
厳密モードでは、関数のパラメータは一意である必要があります// 重名的参数 // 非严格模式中,没有错误,只能访问第一个参数 // 严格模式 :抛出错误 Uncaught SyntaxError: Duplicate parameter name not allowed in this context function sum(num,num){ 'use strict' // do something }
引数オブジェクト
非-strict モードでは、名前付きパラメータの値の変更は引数オブジェクトにも反映されますが、strict モードでは反映されません。これら 2 つの値は完全に独立しています// 修改命名参数的值 // 非严格模式:修改会反应到arguments中 // 严格模式中不会反应到arguments中 function sum(num,num2){ 'use strict' num=3 console.log(arguments[0],num2)// 严格模式下输出为1,2 非严格模式下输出为3,2 } sum(1,2)
eval()
eval 関数の変更点は、含まれているコンテキスト内で変数や関数を作成しなくなったことです:// 使用eval函数创建变量 // 非严格模式中:弹出框弹窗 20 // 严格模式中:调用alert(x)时报错 function doSomething(){ eval('var x=20') alert(x) }strict モードでは、eval() を使用できますが、これらのサイドラインまたは関数は評価される特別なスコープ内でのみ有効です。次のコードを実行しても問題ありません
'use strict' var result=eval('x=1,y=13;x+y') alert(result)ここでは、eval 変数 x と y を宣言し、それらを加算して合計をキャンセルするため、結果変数の値は 21 になります。 x+y の結果。x と y が存在しなくても、alert が呼び出されるとき、結果変数の値は、どのような値が指定されても、常に指定された値になります。
// 访问属性 // 非严格模式:访问全局实行 // 严格模式:抛出错误,因为this的值是null var color = "red"; function displayColor() { alert(this.color); } displayColor(null);
その他の変更点 在严格模式中with语句被抛弃掉了,在非严格模式中with语句能够改变解析标识符的路径,但在严格模式下,with语句被简化掉了,因此,在严格模式下使用with语句是导致语法错误 相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章! 推荐阅读// with语句
// 非严格模式:允许
// 严格模式:抛出语法错误
with (location) {
console.log(href);
}
以上がプロジェクトで JS strict モードを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。