interview
frontend-classic
JS 代码中的 use strict 是什么有什么作用

前端经典面试题合集, JS 代码中的 use strict 是什么?有什么作用?

前端经典面试题合集, JS 代码中的 use strict 是什么?有什么作用?

QA

Step 1

Q:: JS 代码中的 'use strict' 是什么?有什么作用?

A:: 'use strict' 是 ECMAScript 5 引入的一种严格模式,它可以让 JavaScript 代码在更严格的条件下运行。主要作用包括: 1. 消除 JavaScript 语法的一些不合理、不严谨之处,减少一些怪异行为。 2. 消除代码运行的一些不安全之处,保障代码安全。 3. 提高编译器效率,增加运行速度。 4. 禁止使用某些可能导致错误的语法(如全局变量声明)。

具体示例:

 
'use strict';
function myFunction() {
  var x = 3.14; // 这是合法的
  y = 3.14; // 会导致错误,因为 y 未声明
}
 

Step 2

Q:: 使用 'use strict' 的好处是什么?

A:: 'use strict' 的主要好处包括: 1. 让 JavaScript 更加安全,避免一些常见错误,如意外创建全局变量。 2. 提升代码质量,强制开发者遵循更严格的编码规范。 3. 帮助在开发阶段更早地发现潜在问题,提高调试效率。

Step 3

Q:: 'use strict' 模式下有哪些常见的限制?

A:: 'use strict' 模式下的一些常见限制包括: 1. 全局变量必须显式声明,否则会抛出错误。 2. 禁止删除不可删除的属性。 3. 禁止重复声明同一属性。 4. 函数参数名必须唯一。 5. 禁止八进制语法。 6. 禁止 with 语句。 7. eval 中创建的变量无法被外部访问。

Step 4

Q:: 如何在整个文件或函数中启用 'use strict' 模式?

A:: 在整个文件中启用 'use strict' 模式:

 
'use strict';
// 其余代码
 

在函数中启用 'use strict' 模式:

 
function myFunction() {
  'use strict';
  // 其余代码
}
 

用途

`'use strict'` 主要用于确保代码在更严格和安全的条件下运行。这在大型项目中尤为重要,因为它可以帮助开发团队早期发现错误,减少生产环境中的潜在漏洞。同时,它还可以提升代码质量和可维护性,特别是在多人协作和代码审查过程中发挥重要作用。\n

相关问题

🦆
ECMAScript 5 中引入了哪些其他重要特性?

ECMAScript 5 引入了许多新特性,包括: 1. 新的数组方法,如 forEach、map、filter、reduce。 2. Object 的新方法,如 Object.create、Object.defineProperty、Object.keys。 3. 严格模式('use strict')。 4. JSON 对象,用于解析和序列化 JSON 数据。 5. 更强大的属性描述符和控制。 6. bind 方法,用于函数绑定。

🦆
如何处理 JavaScript 中的变量声明提升问题?

在 JavaScript 中,变量声明会被提升到其作用域的顶部,但初始化不会被提升。例如:

 
console.log(x); // 输出 undefined
var x = 5;
 

为了避免变量声明提升带来的问题,建议始终在作用域顶部声明变量,并使用 let 或 const 代替 var。

 
let x = 5;
console.log(x); // 输出 5
 
🦆
什么是 JavaScript 的作用域链?

作用域链是指在函数嵌套时,不同层级的作用域之间的访问关系。每个函数都有自己的作用域,当需要访问一个变量时,JavaScript 会从当前作用域开始查找,如果没有找到,则向上级作用域继续查找,直到全局作用域。

 
function outer() {
  var a = 1;
  function inner() {
    var b = 2;
    console.log(a + b); // 输出 3
  }
  inner();
}
outer();