var 가 for 순환 에서 만난 문제 해결

1650 단어 varfor순환 하 다.
머리말
var 는 ES5 가 변 수 를 정의 하 는 성명 방식 입 니 다.var 성명 변 수 는 순환 변수 가 전체 변수 로 유출 되 는 문제 가 존재 한 다 는 말 을 들 었 지만 이'전체'가 어떤 영향 을 미 치 는 지,그리고 언제 출력 한 결과 가 증가/감소 하 는 값 인지,언제 같은 값 을 출력 할 지 모 르 겠 습 니 다.
문제 가 재현 되다

for (var i = 1; i <= 5; i++) {
  setTimeout(function timer() {
    console.log(i)
  }, i * 1000)
}
예상 효과:12345
인쇄 결과:66666
해결 방법
폐쇄 하 다

for (var i = 1; i <= 5; i++) {
    (function (j) {
        setTimeout(function timer() {
            console.log(j)
        }, j * 1000)
    })(i)
}
setTimeout 세 번 째 매개 변수

for (var i = 1; i <= 5; i++) {
   setTimeout(
       function timer(j) {
           console.log(j)
       },
       i * 1000,
       i
   )
}
let 정의 사용 i

for (let i = 1; i <= 5; i++) {
    setTimeout(function timer() {
        console.log(i)
    }, i * 1000)
}
let
let 에 대해 기억 하 세 요:현재 i 는 이번 라운드 에서 만 유효 합 니 다.매번 순환 하 는 i 는 사실 새로운 변수 입 니 다.
JavaScript 엔진 내 부 는 이전 순환 의 값 을 기억 하고 이 라운드 의 변 수 를 초기 화 할 때 이전 순환 을 바탕 으로 계산 합 니 다.
또한,for 순환 은 또 하나의 특별한 점 이 있 습 니 다.즉,순환 변 수 를 설정 하 는 부분 은 부모 역할 영역 이 고 순환 체 내 부 는 단독 적 인 하위 역할 영역 입 니 다.

for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc
총결산
var for 순환 을 사용 하여 발생 하 는 문제 해결 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 var for 순환 문제 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기