Ошибка jsLint: «somefunction () использовался до того, как был определен» - PullRequest
23 голосов
/ 15 сентября 2011

Почему JSLint жалуется, если что-то использует функцию, которая еще не была определена?Дело в том, что функция определена - и если что-то вызывает эту функцию, эта функция существует, и все будет работать.

Взгляните на код ниже:

function foo()
{
   // calls bar()
};

function bar()
{
   // calls foo()
};

Тамнет способа организовать 2 метода таким образом, чтобы это сделало JSLint счастливым.Как мне решить эту проблему?

Ответы [ 3 ]

17 голосов
/ 25 июля 2013

Насколько мне известно, JSLint не может справиться с этим, но JSHint, основанный на JSLint, должным образом решает эту проблему.

Просто используйте свойство latedef и установите для него значение false. Если вы все же хотите обнаружить подобные проблемные определения переменных, но хотите использовать выражения функций и разрешить подъем этих функций, вы можете установить "latedef": "nofunc".

Проверьте это здесь .

14 голосов
/ 15 сентября 2011

Смотрите этот ответ:

Конкуренция с JS "использованным ранее определенным" и Titanium Developer

Обычно, если вы используете форму foo = function() { ... }, вы можете объявить var foo, bar; вверху, чтобы избежать ошибок JSLint.

0 голосов
/ 08 апреля 2019

Я только что столкнулся с проблемой, которая была очень похожа на эту, и проблема была в том, что мой сценарий был на месте после вызова функции,

function zzzzz () {
   aaaaa();
   ccccc();
  }

function aaaaa() {
 blah = bla blah blah;
 }
function bbbbb() {
 blah = bla blah blah;
 }
function ccccc() {
 blah = bla blah blah;
 }

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

function aaaaa() {
 blah = bla blah blah;
 }
function bbbbb() {
 blah = bla blah blah;
 }
function ccccc() {
 blah = bla blah blah;
 }

function zzzzz () {
   aaaaa();
   ccccc();
  }

Удачи, и я надеюсь, что это поможет

...