두 번째 예제는 i
각 반복이 아니라 한 번 선언 되기 때문에 확실히 작동하지 않아야합니다. 이것은 해당 범주의 루프가 작동하는 방식의 함수일뿐입니다.
일반 브라우저에서 시도해 볼 수 있습니다.
for (var i = 0, otherVar = ""; i < [1,2,3,4].length; i += 1){
console.log(otherVar)
otherVar = "If otherVar was initialized on each iteration, then you would never read me.";
}
루프 const
에서 완전히 허용되지 않는 경우는 아닙니다 for
. 그것만 for
이 const를 수정할 것입니다.
다음은 유효합니다.
for(const i = 0;;){ break }
for(const i = 0; i < 10;){ break; }
다음은 유효하지 않습니다.
for(const i = 0;;){ ++i; break; }
for(const i = 0;;++i){ if(i > 0) break; }
ES2015 사양을 읽은 후 Firefox가 SyntaxError를 제공하는 이유를 잘 모르겠습니다 (Mozilla의 영리한 사람들이 정확하다고 확신하지만) 예외를 발생시켜야하는 것 같습니다.
환경 레코드에서 새롭지 만 초기화되지 않은 변경 불가능한 바인딩을 만듭니다. 문자열 값 N은 바인딩 된 이름의 텍스트입니다. S가 true이면 바인딩이 초기화되기 전에 바인딩 값에 액세스하려고 시도하거나 초기화 된 후에 설정하면 해당 바인딩을 참조하는 작업의 엄격 모드 설정에 관계없이 항상 예외가 발생합니다. S는 기본값이 false 인 선택적 매개 변수입니다.