내가 이해하는 한, for
개의 루프는 자바 스크립트에서 별도의 클로저를 만들지 않습니다. 그래서 누군가가 왜 내게 다음 코드에서 dogs
같은 개체에 대한 두 개의 참조가 채워지지 않습니다 설명 할 수 있습니까? 즉 {name: 'lunski', species: 'dog'}
이 코드는 왜 클로저처럼 동작합니까?
var animals = [
{name: 'fluffy', species: 'dog'},
{name: 'miauw', species: 'cat'},
{name: 'lunski', species: 'dog'}
];
var dogs = [];
for(var i = 0, e = animals.length; i<e; i++){
if (animals[i].species === 'dog'){
dogs.push(animals[i]);
}
};
나는 dogs[]
모두 배열 요소는 animals[2]
에 대한 참조를 보유 것이라고 생각하지만, 사실 배열 dogs
은 부드러운 객체와 lunski 객체 모두를 개최한다.
편집 : 그래서 마치 클로저가 만들어지는 것처럼 보입니다. (사실이 아니라고 생각합니다.) 그러나 질문은 여전히 남아 있습니다. dogs[]
은 왜 독특한 물체로 가득 찼습니까?
클로저가 여기에 연관되어 있다고 생각하는 이유는 무엇입니까? 이 코드에는 클로저가 없습니다. 이 코드에는 기능이 없습니다. – user2357112
'animals [i]'를 밀면 값을 푸시하는 대신 참조를 생성하지 않습니다. –
함수가 포함되어 있지 않으므로 여기에는 클로저가 포함되어 있지 않습니다. 개 길이는 2입니다. –