Skip to content
大纲

ES5

with

with 语句是 ES5 中的语法结构。在 ES5 中,with 语句可以用来访问嵌套对象的属性和方法,从而简化代码的书写。

with 语句的语法如下所示:

js
with (expression) {
  statement(s)
}

其中,expression 是一个对象表达式,而 statement(s) 是要执行的代码块。

with 语句的作用是将对象的属性和方法“注入”到当前的执行环境中,从而使得可以直接访问这些属性和方法,而无需在每个属性和方法前都写出该对象名称。

使用示例:

js
const person = { name: 'Alice', age: 25 };
with (person) {
  console.log(name); // 输出Alice
  console.log(age); // 输出25
}

在上面的代码中,with 语句将 person 对象的属性和方法注入到当前的执行环境中,从而可以直接访问 nameage 属性,而无需在每个属性前都写出 person 对象名称。

尽管 with 语句可以简化代码的书写,但是由于其会影响作用域链的解析,因此会带来一些潜在的问题和安全风险。因此,在实际开发中,建议避免使用 with 语句,而是使用常规的对象访问方式来操作对象的属性和方法。

由于 with 语句会改变作用域链的解析,可能会导致一些意外的错误和安全风险,因此在 ES5 的严格模式("use strict")中,with 语句被禁用了。

在 ES6 中,with 语句已经被弃用,不再被支持。因此,建议在 ES6 及以上版本的 JavaScript 中,使用常规的对象访问方式来操作对象的属性和方法,避免使用 with 语句。