with介绍
with是js中的一个关键字,作用是改变代码块中的作用域
注:严格模式下无法使用with
基本用法
通过with可以将作用域传入给代码块,代码块中的值都会从传入的作用域中查找
//通过with修改对象下的值
var obj = {
a: 1,
b: 2,
c: 3
};
with (obj) {
a = 3;
b = 4;
c = 5;
}
with的弊端
内存泄漏
如果with中代码块的值不在传入的作用域上,就会将值赋到window对象上
var obj = {
a: 1
};
with (obj) {
a = 3;
b = 4;
}
性能下降
JavaScript 引擎会在编译阶段进行数项的性能优化,有些优化依赖于根据代码的词法进行静态分析,但with中的作用域是无法预知的,造成js引擎无法优化