const не работает в инструментах разработчика Edge 15
Я бегу Edge/15.15063. "Могу ли я использовать" говорит, что const должен работать.
Бег:
const x = 'woo'
Затем:
console.log(x)
Возвращает
'x' is undefined
Скриншот:
Почему не работает const?
2 ответа
Я подозреваю, что консоль Edge использует with
Заявление под его крышками, как и другие реализации сделали. Это объяснило бы var
и даже function
декларации поднимаются наружу в глобальную сферу, ноlet
а такжеconst
будет заблокирован в области блока:
with (…) {
const x = 'woo'
}
// next input:
with (…) {
console.log(x) // obviously undeclared
}
Попробуйте ввести их в многострочном режиме, в одной оценке - там они должны работать.
Но вы также можете захотеть сообщить об ошибке, поскольку консоль действительно должна оценивать вещи в глобальной области видимости.
Я думаю, что я понял это, но это скорее предположение, чем ответ. Слишком долго для комментария, хотя.
Я думаю, что происходит то, что const
а также let
не создавайте неявные глобальные переменные при использовании в области верхнего уровня таким же образом var
делает. Хотя переменные верхнего уровня созданы с const
а также let
являются глобальными, они не являются свойствами глобального window
объект.
Если консоль MS полагается на это неявное window
создание свойства для доступа к переменным, созданным в консоли, затем const
а также let
не будет работать.
Я не уверен во внутренней работе Chrome Dev Tools, но, похоже, создается анонимная функция-оболочка для кода, выполняемого в консоли:
throw new Error;
VM679: 1 необнаруженная ошибка при анонимном: 1: 7
(function() { throw new Error; })();
VM759: 1 необнаруженная ошибка при анонимном:1:21 при анонимном:1:33
Я не уверен, что здесь происходит другая песочница, я не обязательно нашел много документации по ней.