>  기사  >  웹 프론트엔드  >  js 클로저와 루프

js 클로저와 루프

巴扎黑
巴扎黑원래의
2016-12-06 09:53:41837검색

function box(){
  var arr = [];
  for(var i=0;i<5;i++){
    arr[i]=function(){
      return i;
    }
  }
  return arr;
}
var b = box();
console.log(b.length);
for(var i=0;i<b.length;i++){
  console.log(b[i]())
}

위 코드는 5 5 를 출력합니다

b[i]()가 익명 함수를 호출하지만 익명 함수는 자체적으로 실행되지 않으므로 호출 시 box( ) 실행되었습니다. . . .

다음 변경:

function box(){
  var arr = [];
  for(var i=0;i<5;i++){
    arr[i]=(
      function(num){
        console.log("ccc="+num)
        return num;
      }
    )(i)
  }
  return arr;
}
var b = box();
console.log(b.length);
for(var i=0;i<b.length;i++){
  console.log(b[i])
}

실행 결과:

num=0
num=1
num=2
num=3
num=4
5
0
1
2
3
4

수정 후 익명 함수가 자체적으로 실행되어 b[i]가 최종 반환됩니다. 더 이상 함수가 아닙니다

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