Что плохого в использовании оператора с меткой в ​​глобальном коде?

Я только что просматривал источник JSLint и заметил этот фрагмент кода:

// Is this a labeled statement?
//...
if (next_token.labeled !== true || funct === global_funct) {
    stop('unexpected_label_a', label);
} //...

Интересной частью является funct === global_functсравнение. Запуск следующего фрагмента через JSLint выдает ошибку «Неожиданная метка», поскольку оператор с меткой находится в глобальном контексте выполнения (. Я знаю, это глупый пример. Вот скрипка .):

loop:
for (var i = 0; i < 10; i++) {
    if (i === 5) {
        break loop;
    }
}

Если вы поместите тот же фрагмент в функцию, JSLint вполне им доволен и не выдаст ошибку, когда встретит метку. Вот скрипт с кодом, который будет передавать JSLint. Код можно вставить в онлайн-версию JSLint , если вы хотите попробовать.

Итак, мой вопрос :есть ли что-то неправильное в использовании помеченного оператора в глобальном коде, или это просто еще один личный выбор Крокфорда?

8
задан James Allardice 17 July 2012 в 20:35
поделиться