Я играю с некоторой бессмысленной логикой, чтобы лучше понять ES6 и заметил странное появление при определении константы.ES6 Почему я могу переназначить константу, когда она определена в цикле
Представляется возможным изменить постоянное назначение, если определено в цикле:
"use strict";
for(const i=0;i<10;i++){ //seting constant in loop
console.log(i); //is reassigned and incremented 0,1,2,3...
}
const e = 0; //setting constant outside loop
for(;e<10;e++){ //cannot reassign constant
console.log(e);
}
Это ожидаемое поведение и может кто-нибудь пролить некоторый свет на то, почему это происходит, это заявление в петле по-другому?
Обновление от Statements/const
This declaration creates a constant that can be global or local to the function in which it is declared. Constants are block-scoped.
Ничего себе, просто попробовал это в Chrome версии 40.0.2214.94, и он генерирует бесконечный цикл, возможно, потому что константа никогда не отключается. Какой браузер вы используете? – Sarcadass
Это, вероятно, означает, что хром имеет правильное значение, не переназначая его (но, скорее всего, следует выкидывать ошибку) и все еще поднимает константу. В вашем случае кажется, что 'const' действует как' let' https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#let_in_loops –
В Firefox я получаю 'TypeError: redeclaration var i' для первого примера – Kapep