좋아요. 저는 자바 스크립트의 고급 기능을 배우고 있으며, 이제는이 기능을 사용하려고 노력하고 있습니다. 여기 배열 내부의 객체 - 한 범위에서만 작동하지만 다른 범위에서는 작동하지 않습니까?
내 코드입니다 :function Data(){}
function init(state){
var item;
item=new Data();
item.fieldrid=17;
item.description='foo';
state.push(item);
};
function findInState(state,fieldrid) {
for (var item in state) {
alert(item.fieldrid); //prints undefined
if (item.fieldrid == fieldrid) {
return item;
}
}
return null;
}
var s=[];
init(s);
alert(s[0].fieldrid); //prints 17 (expected)
alert(findInState(s,17).fieldrid); //exception here. function returns null.
실행중인 예 here at jsbin
왜이 작동하지 않습니다
입니까? 나는findInState
에있는 경고가 17을 내기를 기대하지만, 대신 그것은 정의되지 않은 것을 산출합니다.
내가 뭘 잘못하고 있니?
사실, 루프 할 수 있습니다. 'var item'은 배열 인덱스 만 보유하고 있습니다. 그런 다음'for' 블록의 나머지 부분에'item' 대신'state [item]'을 사용해야합니다. 말할 필요도없이 이것은 실제로 어레이를 반복하는 기본 방법이 아닙니다. – BalusC
@BalusC 좋은 지적입니다. – deceze
@balus 그렇다면 "선호되는 방식"은 무엇입니까? C 스타일의'(;;)'문법 이외에 빠진 부분이 있습니까? – Earlz