객체가 가지고 있는 프로퍼티 및 메소드의 존재 여부를 Boolean으로 반환함
in 연산자는 기본적으로 객체 용이다.
배열에다 in 연산자를 쓰면, 인덱스를 검사하게 되는 꼴이 된다.
for문
let arr = [1,2,"a","b",{c:100},[10,20]];
for(let i in arr)
console.log(i); // 0 1 2 3 4 5 인덱스가 반환된다.
console.log("a" in arr) // false
배열
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
0 in trees // true를 반환합니다.
3 in trees // true를 반환합니다.
(1 + 2) in trees // true를 반환합니다. 연산자 우선 순위에 의하여 이 구문의 괄호는 없어도 됩니다.
6 in trees // false를 반환합니다.
"bay" in trees // false를 반환합니다. 당신은 배열의 내용이 아닌, 인덱스 값을 명시하여야 합니다.
"length" in trees // true를 반환합니다. length는 Array(배열) 객체의 속성입니다.
// 미리 정의된 객체
"PI" in Math // true를 반환합니다.
"P" + "I" in Math // true를 반환합니다.
// 사용자가 정의한 객체
var myCar = {company: "Lamborghini", model: "Lamborghini Veneno Roadster", year: 2014};
"company" in myCar // true를 반환합니다.
"model" in myCar // true를 반환합니다.
객체
myObj = {
no: 1,
name: 'webisfree',
getName: function() { return this.name; }
}
'no' in myObj; // true
'name' in myObj; // true
'getName' in myObj; // true
'url' in myObj; // false
in의 쓰임은 다양할 수 있지만 특정 메소드, 프로퍼티 key값 이름의 존재 여부를 검증하기 위한 목적으로 많이 사용된다. 즉 없는 메소드, 프로퍼티를 동작할 경우 에러가 발생할 수 있으므로 사전에 여부를 먼저 확인하기 위한 목적이 크다.
-> 추가로 공부해야 할 것 : hasOwnProperty()