Комментарии 23
скажите:
1. const должен работать как let или var?
2. const как свойство класса использовать нельзя, я тикер понимаю
3. Я в этих примерах что-то никогда не видел, есть ли модификатор static?
1. const должен работать как let или var?
2. const как свойство класса использовать нельзя, я тикер понимаю
3. Я в этих примерах что-то никогда не видел, есть ли модификатор static?
0
1. Как let
2. Нельзя
3. Есть, но только для методов и полей класса
2. Нельзя
3. Есть, но только для методов и полей класса
0
1. Замечательно
2. Плохо
3. Замечательно)
Интересно, чисто логически, будет ли корректно работать?
И даже так?
Хотя и было сказано:
Но я не совсем согласен.
2. Плохо
3. Замечательно)
Интересно, чисто логически, будет ли корректно работать?
for (let i = 0; i < 5; i++) {
const x = i * 17;
}
И даже так?
for (const i = 0; i < 5; i++) {
}
Хотя и было сказано:
Не смотря на наши фантазии по этому поводу, намного важней, чтобы вы понимали когда вам действительно необходимо использование константы. Не стоит использовать константы для простых переменных, иначе это может стать причиной недопонимание.
Но я не совсем согласен.
0
Первый пример разумеется работоспособный, но какого либо преимущества над использованием обычного оператора
То отхватите ошибку дублирования.
Второй же содержит ошибку, так как константа
var
нет. Но если вы напишите например такое:const a = 10;
const a = 11;
То отхватите ошибку дублирования.
Второй же содержит ошибку, так как константа
i
— read-only, и не может быть инкрементирована или деинкрементирована0
Вообще в идеологии let, как я понимаю, нету разницы между первым и вторым примером, т.е. let в for распространяется на каждый новый внутренний блок и потому, как я показал в примере ниже — в Хроме на каждой итерации создается своя константа и не блокируется предыдущей read-only. Такой подход сделано, чтобы корректно работал следующий скрипт, который корректно работает в Хроме, и пока некорректно (как var) в Файрфоксе:
Думаю, когда в Файрфоксе настроят корректную видимость let (чтобы для каждого вызова он был независим — можно будет в объявлении for использовать const)
(function () {
'use strict';
for (let i = 0; i < 5; i++) {
setTimeout( function () {
console.log(i);
}, i );
}
})();
Думаю, когда в Файрфоксе настроят корректную видимость let (чтобы для каждого вызова он был независим — можно будет в объявлении for использовать const)
0
В Хроме и Файрфоксе это работает правильно (0, 3, 6, 9, 12)
Следующее в Файрфоксе вызывает «invalid assignment to const i», а в хроме работает корректно с «use strict» и уходит в бесконечный цикл без «use strict»
(function () {
'use strict';
for (let i = 0; i < 5; i++) {
const a = i * 3;
console.log( a );
}
})()
Следующее в Файрфоксе вызывает «invalid assignment to const i», а в хроме работает корректно с «use strict» и уходит в бесконечный цикл без «use strict»
(function () {
'use strict';
for (const i = 0; i < 5; i++) {
console.log( i );
}
})()
0
Почему то, мне кажется, что нового создания переменной не происходит, а лишь передача значения (хотя в виде переменной) в scope конкретной итерации.
А с
А с
const
уходит в бесконечный так как поведение хрома достаточно интересно. Он не бросает каких либо исключений, а просто игнорирует присвоение, инкремент.0
Ура, жаваскрипт превращается в приличный язык! Надеюсь, «var» и «function foo()» задепрекейтят в следующей версии
-7
А что не так с function foo()?
+2
this не захватывает
0
var obj = {
_x: 42,
getX: () => this._x
};
console.log(obj.getX());
Что вы ожидаете здесь увидеть в консоли? :)
0
Ошибку компилятора
Property '_x' does not exist on type 'Item'.
Property '_x' does not exist on type 'Item'.
0
Что вы ожидаете здесь увидеть в консоли? :)
Мне вообще не хотелось бы, чтобы подобные объекты создавались прям в методе
0
Чесно говоря не разделяю большинства опасений автора касательно оператора let. У большинства ЯП такое-же поведение при использовании переменной до ее объявления или же при использовании переменной, объявленной в шапке for после самого цикла.
+1
То есть в for-let на каждой итерации по лишнему замыканию создаётся?
0
Забросили, да?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
ES6 и за его пределами. Глава 2: Синтаксис. Часть 1