2009-08-18 5 views

답변

4

일부는 JavaScript 1.5 specification입니다. 따라서 주요 브라우저에서 지원해야합니다.

+2

새로운 ECMAScript 5 버전은 엄격 모드에서'with' 문을 제거합니다. 이후 버전은 아마도 그것을 모두 제거 할 것입니다. –

1

본 적이있는 JS 사양 중 일부는 아니며 일부 빠른 Google-fu도 결과가 없습니다. 어딘가에 있지 않다는 말은 아니지만 그것이 존재한다면 잘 문서화되거나 지원되지 않는다고 추측 할 수 있습니다.

편집 : 필립에 의해 펀치에 맞고 분명히 내 대답이 잘못되었습니다. 나는 겸손을 위해서 여기두고 갈 것입니다. ;)

+0

Nelson은 "HA! HA!"라고 말합니다. –

2

예 일부분입니다. 자바 스크립트 1.5를 지원하는 모든 브라우저가이를 지원합니다 (모든 주요 브라우저 또는 A 등급).

그러나 with 문을 사용하는 경우는 not recommended입니다.

+0

+1. 'with()'는 번거롭게 할 가치가 없다. 특히'var d = a.b.c; d.attribute = ...;' –

1

자바 스크립트의 with 문구는 피해야합니다.

참조 : 나는 또 다른 변수를 선언 방지에 사용해서는 안되는 것을 동의하더라도 with Statement Considered Harmful

2

(예)

// BAD use of with is to replace this: 
// some.expression.with.lots.of.dots.x = 10; 
// some.expression.with.lots.of.dots.y = 20; 
// with this: 
with (some.expression.with.lots.of.dots) { 
    x = 10; 
    y = 20; 
} 

나는 그것이 합리적인 사용을 가지고 생각 :

// Acceptable use of with is to close over a variable by value. 
var functions = []; 
for (var i = 0; i < 5; i++) { 
    with ({ j: i }) { 
     functions[i] = function() { return j; }; 
    } 
} 

클로저의 또 다른 옵션은 장점이있는 중첩 된 함수이지만 함께 사용하면 더 나은 디버그 경험을 얻을 수 있습니다.

관련 문제