먼저 for 안에 var i가 있습니다. var가 함수 범위이기 때문입니다. i = 'abc';i++이면 i는 NaN이 됩니다. NaN을 숫자와 비교하는 것은 비교 내용에 관계없이 false입니다. 따라서 한 번만 출력하십시오. for里面var i,它们是在同一个作用域的,因为var是一个函数作用域。i = 'abc';i++,这样i就变成NaN了。NaN和数字比较,无论是什么比较,都为false。所以,只输出一次。
第二个,let是块级作用域,所以在for (let i = 0; ...)定义的i只在for的括号里有效,在块内是没有效果的,所以let i = 'abc'是相当于重新定义了一个变量,是for代码块的块级作用域的变量,只在for代码块里有效。所以执行了三次。
第三个问题,你在console.log之后定义了let i,所以i
둘째, let는 블록 수준 범위이므로 for (let i = 0; ...)에만 정의된 i입니다. for의 대괄호 내에서는 유효하지만 블록 내에서는 효과가 없으므로 let i = 'abc'는 변수를 재정의하는 것과 동일합니다. 이는 for The 코드 블록의 블록 수준 변수는 for 코드 블록에서만 유효합니다. 그래서 세 번이나 처형되었습니다. 🎜
🎜세 번째 질문은 console.log 다음에 let i를 정의했기 때문에 호출할 때 i가 정의되지 않았다는 것입니다. 위 항목을 참조하세요. 🎜
먼저
for
안에var i
가 있습니다.var
가 함수 범위이기 때문입니다.i = 'abc';i++
이면i
는NaN
이 됩니다.NaN
을 숫자와 비교하는 것은 비교 내용에 관계없이false
입니다. 따라서 한 번만 출력하십시오.for
里面var i
,它们是在同一个作用域的,因为var
是一个函数作用域。i = 'abc';i++
,这样i
就变成NaN
了。NaN
和数字比较,无论是什么比较,都为false
。所以,只输出一次。第二个,
let
是块级作用域,所以在for (let i = 0; ...)
定义的i
只在for
的括号里有效,在块内是没有效果的,所以let i = 'abc'
是相当于重新定义了一个变量,是for
代码块的块级作用域的变量,只在for
代码块里有效。所以执行了三次。第三个问题,你在
둘째,console.log
之后定义了let i
,所以i
let
는 블록 수준 범위이므로for (let i = 0; ...)
에만 정의된i
입니다.for
의 대괄호 내에서는 유효하지만 블록 내에서는 효과가 없으므로let i = 'abc'
는 변수를 재정의하는 것과 동일합니다. 이는for The
코드 블록의 블록 수준 변수는for
코드 블록에서만 유효합니다. 그래서 세 번이나 처형되었습니다. 🎜 🎜세 번째 질문은console.log
다음에let i
를 정의했기 때문에 호출할 때i
가 정의되지 않았다는 것입니다. 위 항목을 참조하세요. 🎜변수가 개선되었기 때문이죠
첫 번째에서는 외부 i가 'abc'로 변경되어 직접 종료되는 반면, 두 번째에서는 'abc'가 for의 블록 수준 범위로 제한되어 변경되지 않습니다.
var 선언을 사용할 때
으아아아for(var i=0; i이렇게 보면 더 명확해집니다
첫 번째 코드 부분은 다음과 같은 이유로 한 번 반복됩니다.
두 번째 코드에서 let으로 선언된 변수는 해당 변수가 위치한 블록 수준 범위에서만 적용됩니다. 위 코드에서 ()와 {}는 두 개의 블록 수준 범위에 영향을 주지 않습니다. { The i inside } 정의는 ()
내부에 선언된 i에 영향을 주지 않습니다.var은 함수 범위입니다. 두 번째 루프 판단에서는
i = 'abc';
이고'abc'++ < 3
이 false이므로 첫 번째 for 루프는 한 번만 실행됩니다.i = 'abc';
, 而'abc'++ < 3
为false,所以第一个for循环只执行了一次。let是块级作用域。每次for循环都重新定义了一个i,
let은 블록 수준 범위입니다. for 루프가 i를 재정의할 때마다let i = 'abc'
let i = 'abc'
의 범위는 루프 본문 내에 있으며 루프 본문에 영향을 주지 않습니다. #🎜🎜#참조: http://www.ecma-international...
for의 첫 번째 부분이 var(VariableDeclarationList)인 경우 선언된 변수는 별도로 선언된 것처럼 함수 범위에 병합됩니다.
for의 첫 번째 부분이 let되면 루프는 oldEnv와 loopEnv로 나뉘게 되며 loopEnv는 루프 본체와 루프 외부 사이에 끼어 있는 중간 레이어로 간주될 수 있으므로 영향을 받지 않습니다.