JavaScript起点(严格模式深度了解)
什么是严格模式?
严格模式是 ECMAScript 5 引入的一种运行模式,主要作用是弥补了 JavaScript 语言本身一些缺陷,提高了代码的运行效率,增强了安全性。通过开启严格模式,可以使 JavaScript 代码更加规范、更加安全、更加高效。
开启严格模式有两种方式:
- 在全局环境中使用 'use strict';
- 在函数体内部使用 'use strict';
全局使用语法
'use strict';
// 这里是严格模式下的代码块
函数内部使用语法
function someFunction() {
'use strict';
// 这里是严格模式下的代码块
}
一旦开启了严格模式,就不能再返回非严格模式。也就是说,在使用严格模式之后,整个脚本都将在严格模式下运行,无法再切换回之前的非严格模式。
严格模式下的规则
在严格模式下,以下行为被禁止:
- 不允许使用 with 语句;
- 不允许未声明的变量自动成为全局变量;
- 不允许删除未定义的变量;
- 函数参数不能有重复的名称;
- 禁止八进制字面量;
- 禁止对只读属性赋值;
- 对象不允许有重复的属性名;
- 函数中的 this 不再指向全局对象;
- 不允许在函数内使用 eval();
严格模式下的规则有很多,但它们的目的都相同,那就是为了让 JavaScript 代码更加规范、高效、安全。下面通过例子来演示几个严格模式下被禁止的语法。
1. 不允许使用 with 语句
with 语句是 JavaScript 语言中一个容易引起歧义的语句,可能会导致难以调试的问题。在严格模式下,with 语句被禁止使用。
'use strict';
let obj = {a: 1, b: 2};
// 正常情况下可以这样使用对象属性
console.log(obj.a, obj.b);
// 但在严格模式下不能使用 with 语句
with (obj) {
console.log(a, b); // Uncaught SyntaxError: Strict mode code may not include a with statement
}
2. 函数参数不能有重复的名称
在严格模式下,函数的形参命名冲突将会被抛出异常,因此函数参数不能有重复的名称。
'use strict';
// 正常情况下可以这样定义函数
function sum(a, b) {
return a + b;
}
// 但在严格模式下定义函数参数名称不能重复
function sum(a, a) {
return a + a;
}
// 在严格模式下会报错: SyntaxError: Duplicate parameter name not allowed in this context
总结
严格模式是 ECMAScript 5 中为 JavaScript 进行一系列操作规定的模式,在这个模式下,开发者需要遵守更多的规范和规则,从而使代码更加规范、高效和安全。开发者可以通过全局或函数内部的方式来开启严格模式,常见的禁止行为包括了使用 with 语句、对只读属性赋值、禁止在函数内使用 eval() 等等。在实际编码中,建议开启严格模式来保证代码的高质量。
以上就是“JavaScript起点(严格模式深度了解)”的完整攻略,内容详实,希望对您有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript起点(严格模式深度了解) - Python技术站