>  기사  >  웹 프론트엔드  >  JavaScript with 문의 기능과 부작용에 대한 자세한 설명

JavaScript with 문의 기능과 부작용에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-25 14:05:511496검색

with 문을 정의하는 목적은 주로 동일한 개체를 여러 번 작성하는 작업을 단순화하는 것입니다.

with 문은 개체를 범위 체인의 헤드에 추가한 다음 문을 실행하고 최종적으로 범위 체인을 복원합니다. 원래 상태로

with(object){
  statement;
}

Function

  객체가 깊게 중첩된 경우 일반적으로 with 문을 사용하여 코드 작성을 단순화합니다. 기본적으로 새로운 어휘 범위는 객체의 참조를 범위로 처리하고 객체의 속성을 범위의 식별자로 처리하여 생성됩니다. 클라이언트측 자바스크립트에서는 다음과 같은 표현식을 사용하여 HTML의 요소에 액세스할 수 있습니다. form

document.forms[0].address.value

이 식이 코드에 여러 번 나타나는 경우 with 문을 사용하여 범위 체인의 최상위 수준에 양식 개체를 추가할 수 있습니다.

with(document.forms[0]){
name.value = '';
address.value = '';
emai.value = '';
}

이 접근 방식을 사용하면 각 접두사를 붙일 필요가 없으므로 많은 입력 작업이 줄어듭니다. document.forms[0]의 속성 이름입니다. 이 객체는 범위 체인에 일시적으로 마운트됩니다. JavaScript는 주소와 같은 식별자를 구문 분석해야 할 때 자동으로 이 객체를 검색합니다. [참고] with 문은 객체의 속성을 읽을 수 있는 지름길을 제공합니다. 객체의 속성을 생성합니다

객체 o에 x 속성이 있는 경우 다음 코드는 이 속성에 1

var o = {x:0};
with(o) x = 1;
console.log(o.x);//1

값을 할당합니다. 속성 =1이 정확히 동일한 경우입니다. 변수에 대해 LHS 쿼리를 수행하기 때문입니다. with 문을 사용한 코드에 비해 동작 속도가 느려집니다


게다가 with 문이 부적절할 경우 변수 유출이 발생하고 전역 범위가 오염될 수 있습니다

var o = {};
with(o) x = 1;
console.log(o.x);//undefined
console.log(x);//1

엄격 모드

 엄격 모드에서는 금지 with 문을 사용하세요

var x = 1;
var o = {};
with(o){
x = 2;
}
console.log(x);//2
console.log(o.x);//undefined

위 내용은 JavaScript with 문의 기능과 부작용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.