关键词

JavaScript起点(严格模式深度了解)

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起点(严格模式深度了解)”的完整攻略,内容详实,希望对您有帮助。

本文链接:http://task.lmcjl.com/news/11255.html

展开阅读全文