2016-09-28 2 views
2

Если я создаю переменную в блоке catch, это область уровня блока?Пробовал ли захват областью уровня блока?

Кажется, что он создан в глобальном масштабе.

Я думал, что это уровень блокировки, потому что не перекодируйте конвертировать оператор let, чтобы попробовать/поймать?

try { 
    throw Error("test"); 
} catch (e) { 
    var x = 15; 
    console.log(x); 
} 

console.log(x); 
+2

Нет, объявление 'var' в предложении' catch' находится в области функций. Однако вы можете использовать 'let' (в ES2015). – Pointy

+0

так что никогда не было взлома, чтобы использовать переменные уровня блока до es6? Мне показалось, что я смотрел видео об этом. – runners3431

+2

На самом деле для 'catch()' существует специальное специальное правило: 'параметр' для блока 'catch' привязан к этому блоку, почти как параметр функции. – Pointy

ответ

1

Если я создать переменную в блоке улова, этот охват на уровне блоков?

Если вы создаете переменную с областью измерения (using let), она есть.

Кажется, что он создан в глобальном масштабе.

Вы используете var, который всегда создает переменную в области текущей функции (или глобальную, если вы не в функции).

Смежные вопросы