Подтвердить что ты не робот

Пустые функции в Javascript

Если у меня есть что-то вроде этого:

var blah = function() { };

а затем используется код blah, что такое подсказка JSLint, которая говорит удалить пустой блок?

4b9b3361

Ответ 1

Я не знаю, что думает jsLint, но если это проблема, и вам нужно решение, вы можете сделать что-то вроде следующего:

var blah = function() { return undefined; }; // or just return;

Обновление: Я думаю, что Bergi предположение верно, потому что на jslint сайте в Required Blocks:

JSLint ожидает, что если, while, do и для операторов будут сделаны с блоков {то есть с операторами, заключенными в фигурные скобки}.JavaScript позволяет a, если нужно написать так: if (condition) statement; которые, как известно, способствуют ошибкам в проектах, где многие программисты работая над одним и тем же кодом. Вот почему JSLint ожидает использования блок:

if (condition) { statements; }

Опыт показывает, что эта форма более устойчива.

Итак, возможно, он просто проверяет пустые блоки { } и делает недействительными пустую функцию.

Ответ 2

Если вы спрашиваете, какая опция JsLint отключает это предупреждение, это: "debug: true"

Как ни странно, документы не ссылаются на это поведение:

"Толерантные утверждения отладчика" | отладка | true, если утверждения отладчика должны быть разрешены. Перед вводом этой опции установите для этой опции значение false.

Но если вы посмотрите код, вы увидите, что он не предупредит вас, если опция debug установлена ​​в true:

function block(kind) {
    // A block is a sequence of statements wrapped in braces.

    ...

    if (kind !== 'catch' && array.length === 0 && !option.debug) {
        curly.warn('empty_block');
    }
    ...
}

Ответ 3

Многие проверки кода проверяют это. Это не означает, что у вас никогда не должно быть пустых блоков кода. Иногда есть веские причины их наличия. Но это часто означает, что программист просто забыл написать реализацию.:)

Мне нравится делать комментарий в теле функции, объясняя, почему она пуста. Это должно подавлять предупреждение, но это может не зависеть от того, считает ли блок проверки кода блоком кода с комментарием "пустой".

var blah = function() { /* empty because ... */ };

Ответ 4

Если вы намерены использовать эту функцию в качестве конструктора с оператором new:

// Returns the instance that was just created with the new operator.
var ClassLikeFunction = function(){
    return this; 
};

С другой стороны, если намеренно является пустой функцией без возвращаемого значения:

// Returns the same value as a function that returned nothing.
var blankFunction = function(){
    return undefined; 
};

Ответ 5

Это

{
    ...
}

считается блоком кода, и подсказка позволяет вам знать, что он пуст (в нем нет команд). Вам не нужно удалять его, хотя, как сказал @Katana314, он может быть преднамеренным.