javascript - ES6 표준 소개의 let 명령에서 언급한 for 루프 인쇄는 10입니다. let 없이 어떻게 교체할 수 있나요?
阿神
阿神 2017-06-28 09:22:57
0
4
810

최근에 저는 Ruan Yifeng 선생님의 ES 표준 소개를 읽고 있었는데, 첫 번째 장을 읽을 때 코드 조각을 언급했습니다

으아악

여기서 let을 사용하면 이 문제를 해결할 수 있지만, ES5 방식을 사용하면 어떨까요? IIFE는 그것을 할 수 있지만 즉시 인쇄합니다.

阿神
阿神

闭关修行中......

모든 응답 (4)
扔个三星炸死你

으아악

폐쇄 문제

    巴扎黑

    사용자 정의 속성을 사용할 수 있습니다
    var a = [];
    for (var i = 0; i < 10; i++) {

    으아악

    }
    a[6]() // 6

    ;
      曾经蜡笔没有小新

      이건 질문자가 6을 출력하고 싶어하는 것 같은데요?let

      그런데 질문하신 내용이 원하는 내용과 완전히 일치하지 않는 것 같습니다. 질문 설명을 변경하는 데 도움을 드리고 싶지만 조금 무기력합니다...

      이것은 실제로 폐쇄 문제입니다. 먼저 10이 출력되는 이유를 분석해 보겠습니다.

      으아악

      의 값은 10이므로 10이 출력됩니다.for里面的i的作用于是整个外部区域,所以,当调用a[6]()的时候,其实运行的是console.log(i),而此时因为跑完循环,i

      질문자님 말씀은

      해결이 가능합니다. 왜냐하면for에서let可以解决,是因为,for里面,let声明的变量,作用于只在for内部,所以,不会因为循环跑完而使得i에서 선언한 변수는for내부에서만 사용되기 때문에 루프로 인해 실행되지 않기 때문입니다. . 이는 전역 범위에서i를 10과 동일하게 만듭니다.

      사실 이 질문이 실제로 조사하는 것은 종결이어야 합니다.

      으아악

      클로저의 역할은 외부 변수 값을 오염시키지 않고 지역 변수를 서로 격리하는let의 이전 역할과 유사합니다. 각 클로저는 독립적인 영역이며 클로저 매개변수는 클로저 내부에서만 사용되므로 6을 출력한 결과도 얻을 수 있습니다.

        Peter_Zhu

        클로저를 사용할 수 있습니다
        http://www.softwhy.com/articl...
        이 글의 후반부에서는 이미 질문에 대해 설명했습니다

          최신 다운로드
          더>
          웹 효과
          웹사이트 소스 코드
          웹사이트 자료
          프론트엔드 템플릿
          회사 소개 부인 성명 Sitemap
          PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!