목차
with 예제 - 객체를 이용해 구문 작성
with 정의
with 구문
※ 폐기예고(Deprecated) 된 키워드이니 사용 금지. !! ※ 전문가들이 사용 금지 권유하는 키워드(eval/with) 중 하나. ㅡㅡ;
with 예제 - 객체를 이용해 구문 작성
<script>
var obj = {
site: "홈짱닷컴",
host: "Homzzang.com",
open: 2012
}
with (obj) {
console.log(site === "홈짱닷컴"); // true
console.log(host === "homzzang.com"); // false
console.log(open === "2012"); // false
// 객체값 재설정
host = "homzzang.com";
open = "2012";
role = "홈페이지 제작관리";
}
console.log(obj.host === "homzzang.com"); // true
console.log(obj.open === "2012"); // true
console.log(obj.role === "홈페이지 제작관리"); // false
</script>
결과보기
PS. 마지막 값이 false인 이유
host와 open은 원래 객체에 있던 속성인데, role은 with문 안에서 obj 객체에 없던 속성을 선언한 것이기 때문 임.
with 문은 JavaScript에서 사용을 권장하지 않는 기능 중 하나이며, 코드를 읽기 어렵게 만들고 예상치 못한 동작을 발생시킬 수 있으므로 피하는 것이 좋음.
with 문은 변수를 참조할 때 현재 스코프에 변수가 없으면 전역 스코프에서 변수를 찾으려고 시도함. 따라서 with 문 내에서 role을 선언할 때 실제로는 전역 스코프에 있는 role 변수가 만들어지게 됨 .
따라서, obj.role === "홈페이지 제작관리"를 평가할 때, obj 객체 내에 role 속성은 생성되지 않았으므로 전역 스코프에서 role 변수를 찾게 되고, 이 변수는 "홈페이지 제작관리"가 아닌 이전 값으로 남아 있을 것임.
위와 같은 이유로 obj.role === "홈페이지 제작관리"는 false를 반환함. with 문은 코드를 읽기 어렵게 만들고 예기치 못한 부작용을 초래할 수 있으므로 사용을 피하는 것이 좋음. 대신에 명시적으로 객체 속성에 접근하는 것이 권장됨.
with 정의
객체를 매개변수로 받아서, 해당 객체를 이용해 다음에 오는 구문에 적용.
1.
사용폐기 된 코드이니, 사용 금지.
2.
MDN with 예제보기https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with
with 구문
with (object ) {
statement;
}
PS. statement가 단일구문일 경우, 중괄호 생략 가능.
[속성값]
object
필수. 객체
주소 복사
랜덤 이동