var 가 for 순환 에서 만난 문제 해결
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)
}
letlet 에 대해 기억 하 세 요:현재 i 는 이번 라운드 에서 만 유효 합 니 다.매번 순환 하 는 i 는 사실 새로운 변수 입 니 다.
JavaScript 엔진 내 부 는 이전 순환 의 값 을 기억 하고 이 라운드 의 변 수 를 초기 화 할 때 이전 순환 을 바탕 으로 계산 합 니 다.
또한,for 순환 은 또 하나의 특별한 점 이 있 습 니 다.즉,순환 변 수 를 설정 하 는 부분 은 부모 역할 영역 이 고 순환 체 내 부 는 단독 적 인 하위 역할 영역 입 니 다.
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc
총결산var for 순환 을 사용 하여 발생 하 는 문제 해결 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 var for 순환 문제 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
var, let, const의 차이 - 변수 선언 및 할당for 문의 변수 선언문에서 선언한 변수를 for 문의 코드 블록 외부에서 참조할 수 있다. ES6에서는 var의 이러한 특성들 때문에 let과 const 키워드를 도입했습니다. 함수 내에서 선언된 변수는 함수 내에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.