상수에서
3597 단어 compat-table
묘사
ES6는 다음과 같은 아키텍처를 지원합니다.var keys = [];
for (const i in {a: 2, b: 3}) {
setTimeout(function () {
keys.push(i);
});
}
console.assert(keys.indexOf('a') > -1);
console.assert(keys.indexOf('b') > -1);
이것은 const
현식 초기값 설정 항목이 없는 상황에서 허용되는 유일한 상황인 것 같아서 검사할 가치가 있을 수 있습니다.크롬 43은 테스트를 통과했고 IE11과 Edge는 없었다.
또한 더 깨끗한 테스트는
for-of
를 사용하지만 이것은 내가 가입하고 싶지 않은 또 다른 기능이다.토론 #1
왜const something;
가 작용하지 않습니까?이것은 재분배할 수 없는 변수로 undefined
을 포함할 것이다.또한 setTimeout 콜백은 자주 반복되는 "last"오류(http://www.mennovanslooten.nl/blog/post/62/- 이런 상황을 피하기 위해서는
(function (i) { setTimeout(function () { keys.push(i); }); }(i))
를 해야 한다.규범상 사용 불가토론 #2
const sth;
;나는 많은 경우에 정의되지 않은 상수가 필요하다고 생각하지 않기 때문에 이것은 합리적인 것 같다.아니오, 봉투로 포장할 필요 없어요.이것이 바로 중점이다. 매 교체 변수마다 새로운 귀속이 있고 우리 모두
setTimeout
는 하나의 단독 귀속을 전달할 것이다.이것도 내가 여기서 테스트하고 싶은 내용 중의 하나다.토론 #셋
아하, 잘했어:-) 나는 순환과'var'으로 무릎 점프 반응을 하는 것에 너무 익숙해서 똑똑히 생각하지 못했다.규범 중 어느 곳에서 이렇게 하는 것을 허락하지 않습니까?Chrome(stable and canary)은 현재 허용되지만 Firefox Nightly와 Babel은 허용되지 않습니다.
이것은 확실히 유용한 테스트로 보인다.
토론 #4
나는 지금AFK이지만, 너는 엄격한 모드에서 테스트를 해야 한다.크롬이 지저분해요.const가 규범에 맞지 않습니다. (이것도 ES6 이전의 실현이고 Firefox도 마찬가지입니다.)
하나)와 현재 경솔하게 일하지 못하게 하는 모든 것.
Micha Go biowski
토론 #5
는 리콜 계약이 let에 대해 비슷한 테스트를 수행했다고 지적했다.내 생각에는 그렇다하지만 테스트const도 유용합니다. 왜냐하면let의 경우
지원 브라우저가 부정확한 결과만 주고 거부하도록 합니다
해석 단계의 상수 변수.
Micha Go biowski
토론 #6
참고: 이 테스트(필요!)필요 없음setTimeout(..)
, 필요 없음let
처럼.동기화 디스플레이가 더 깨끗합니다.토론 #7
그럼요.나는 let의 기능을 검사했다.변수를 창고에 추가하기 (잠시 후 호출), 더 좋은 방법에 동의합니다.
테스트
Micha Go biowski
토론 #8
는 현재 "for 순환 반복 범위"라는 하위 테스트let
가 있습니다.내가 보기에 이 테스트는 적합할 것이다.
for(let
의 출현을 for(const
로 바꿀 것이다.토론 #9
@claudepacheCurrently, there exists a subtest for let called "for-loop iteration scope". It seems to me that that test would be appropriate, replacing occurences of
for(let
withfor(const
.
:+1:
편집: 즉 이 테스트의 두 번째 부분(검사
let i in
)은 매우 유용할 것이다. 첫 번째 부분은 일을 하지 않을 것이다. 왜냐하면 i++
를 통해 교체되기 때문이다.토론 #10
+1 Firefox도 이 테스트를 통과하지 못했습니다.https://bugzilla.mozilla.org/show_bug.cgi?id=1094995토론 #11
Firefox 45,for (const i of [1,2]) {
console.log(i);
}
==> SyntaxError: invalid for/in left-hand side
for (let i of [1,2]) {
setTimeout(function () {
console.log(i);
})
}
==> 2,2 (Must be 1,2)
#kangax, 표의 Firefox 별수const
와 let
는 반드시 줄여야 합니다. 그렇지 않으면 이것은 정말 오도토론 #12
입니다. Firefox는 이미 8/10let
에 불과합니다. 이 행위("for 순환 교체 범위")는 이미 테스트를 거쳤기 때문입니다.토론 #13
+1 사례 추가 요청for (const v of [1,2,3]) v;
확인(원인의 근원이
let
의 작용역 문제와 같아도)토론 #14
네, Firefox 48표에서const 10/10
지만 const는 여전히 처리할 수 없습니다for of
순환:나는 방금 이 문제를 해결하기 위해 홍보관을 만들었다. #758.
Reference
이 문제에 관하여(상수에서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/kangax/compat-table/issues/571텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)