Я не могу найти «неожиданную ошибку токена» в моем коде JS, предоставленном JSDoc во время фазы анализа - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь документировать свой JavaScript с помощью JSDoc. Однако он не будет анализировать этот код из-за «неожиданной ошибки токена, расположенной в 4-й строке следующего кода. Я с радостью просмотрел весь блок кода.

/** Create a new sorter given a table element */
return
{
    create: function(table, initialSortedColumn, customDataAccessors)
    {
        var sorter = Object.create(sorterPrototype);
        sorter.init(table, initialSortedColumn, customDataAccessors);
        return sorter;
    }
};

1 Ответ

0 голосов
/ 04 ноября 2018

У вас есть новая строка после return, поэтому в соответствии с правилами автоматической вставки точек с запятой (ASI), она рассматривается как имеющая ; в конце , поэтому return оператор заканчивается там .

Следовательно, согласно парсеру у вас есть следующий несвязанный код:

{
    create: function(table, initialSortedColumn, customDataAccessors)
    {
        var sorter = Object.create(sorterPrototype);
        sorter.init(table, initialSortedColumn, customDataAccessors);
        return sorter;
    }
};

Это интерпретируется как кодовый блок , начинающийся с { в первой строке и заканчивающийся }; в последней строке. Внутри него есть метка , называемая create и функция оператор без имени функции. Использование безымянных операторов недопустимо, поэтому вы и получаете ошибку.

В действительности, согласно правилам разбора JavaScript, следующий проблемный код:

function(/* parameters */) { /* body */ }

В действительности, ваша функция верхнего уровня всегда будет возвращать undefined из-за ASI, а код после никогда не будет достигнут, но вы все равно получите ошибку при ее синтаксическом анализе.

Что вы хотите сделать, это следующее:

return {
    create: function(table, initialSortedColumn, customDataAccessors)
    {
        var sorter = Object.create(sorterPrototype);
        sorter.init(table, initialSortedColumn, customDataAccessors);
        return sorter;
    }
};

Таким образом, вы возвращаете объект со свойством create и назначенной ему функцией.

...