with
2023年08月07日
一、认识
with
用于扩展一个语句的作用域链。JavaScript
查找某个未使用命名空间的变量时,会通过作用域链来查找,作用域链是跟执行代码的 context
或者包含这个变量的函数有关。'with'语句将某个对象添加到作用域链的顶部,如果在 statement
中有某个未使用命名空间的变量,跟作用域链中的某个属性同名,则这个变量将指向这个属性值。如果沒有同名的属性,则将拋出ReferenceError
异常。
二、语法
with (expression)
statement
-
expression
: 将给定的表达式添加到在评估语句时使用的作用域链上。表达式周围的括号是必需的。 -
statement
: 任何语句。要执行多个语句,请使用一个块语句({ ... })
对这些语句进行分组。
三、场景
3.1 扩充 function 作用域
const obj = {
a: 1,
b: 2
};
function foo() {
with (obj) {
const _a = a;
const _b = b;
const _c = 3;
return _a + _b + _c;
}
}
console.log(foo());