JS: Как исправить "Ожидаемый"), чтобы он соответствовал (из строки 4 и вместо этого увидел "="."Ошибка JSLint

Я написал следующую функцию:

function MyTest(element, no, start=0) {
    this.no = no;
    this.element = element;
    this.currentSlide = start;

    self.start();
}

JSLint жалуется:

Ожидается, что ')' будет соответствовать '(' из строки 4 и вместо этого увидит '='.

Что не так с этим? Это значение по умолчанию, которое я установил?

1 ответ

Решение

У JavaScript нет значений по умолчанию для аргументов (пока; это будет в следующей версии, и, как указывает Boldewyn в комментарии, движок Firefox уже существует), поэтому =0 после start недопустимо в JavaScript. Удалите это, чтобы удалить ошибку.

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

  1. Проверьте аргумент для значения undefined:

    if (typeof start === "undefined") {
        start = 0;
    }
    

    Обратите внимание, что это не делает различий между start будучи полностью обделенным undefined,

  2. использование arguments.length:

    if (arguments.length < 3) {
        start = 0;
    }
    

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

  3. Используйте необычайно мощный JavaScript || оператор в зависимости от того, для чего рассмотрен аргумент. В вашем случае, например, где вы хотите, чтобы значение было 0 по умолчанию вы можете сделать это:

    start = start || 0;
    

    Это работает, потому что, если вызывающий предоставляет "истинное" значение, start || 0 будет оцениваться до заданного значения (например, 27 || 0 является 27); если вызывающая сторона предоставляет какое- либо значение фальси, start || 0 будет оценивать 0, Значения "фальси" 0, "", NaN, null, undefined и конечно false, "Истинные" значения - это все значения, которые не являются "ложными".

Другие вопросы по тегам