作用
改变其代码块中的作用域
在 with 代码块内部,如果with指定对象存在与变量同名的属性,则这个变量会指向该属性
var a = 1, b = 2, c = 3;
var obj = {
a: 11,
b: 12,
};
with (obj) {
a = 31;
b = 32;
c = 33;
}
console.log(a, b, c)//1 2 33
console.log(obj)//{a: 31, b: 32}
弊端
- 在严格模式下被禁用
- 降低代码性能
JavaScript 引擎会在编译阶段进行性能优化,但对with中的内容因在实际执行之前无法预料实际指向谁,因此不会进行优化
网友评论