分别运行下面两段代码
- 使用with的时候:test__time: 390.218ms
const obj = { cunt: 122 };
function test_with() {
with (obj) {
for (let i = 0; i < 1e6; i++) {
cunt = 100;
a = 0;
}
}
console.log(a);
console.log(obj.cunt);
}
console.time("test___start");
test_with();
console.timeEnd("test___start");//test___start: 390.218ms
- 不用with的时候:test__time: 6.668ms
const obj = { cunt: 122 };
function test_with() {
for (let i = 0; i < 1e6; i++) {
obj.cunt = 100;
a = 0;
}
console.log(a);
console.log(obj.cunt);
}
console.time("test___start");
test_with();
console.timeEnd("test___start"); //test___start: 6.668ms
对比耗时 明显with耗时更久,尽量不使用with
with(object){
statement;
}
- 总结一下:with会把object添加到作用域的头部,然后执行statement,与eval类似,with语句的javascript代码非常难于优化,同时也会给调试代码造成困难,并且同没有使用with语句的代码相比,它运算得更慢.