kangax씨가 2007년 9월에 작성한 내용입니다. "with" 명령문(Statements)으로 자바스크립트 성능을 향상시키는 방법에 대하여 다루고 있습니다. 아래의 코드를 실험해 보십시오.
Foo = {
Bar: {
Baz: {
Qux: {
Quux: function(){}
}
}
}
}
// Plain call
console.time('test');
for (var i = 0; i < 100000; ++i) {
Foo.Bar.Baz.Qux.Quux();
}
console.timeEnd('test'); // 562 ms
// "with" outside the loop
console.time('test');
with(Foo.Bar.Baz.Qux) {
for (var i = 0; i < 100000; ++i) {
Quux();
}
}
console.timeEnd('test'); // 359 ms
// with inside the loop
console.time('test');
for (var i = 0; i < 100000; ++i) {
with(Foo.Bar.Baz.Qux) {
Quux();
}
}
console.timeEnd('test'); // 1891 ms
// aliasing
console.time('test');
for (var i = 0, q = Foo.Bar.Baz.Qux.Quux; i < 100000; ++i) {
q();
}
console.timeEnd('test'); // 422 ms