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. Удалите это, чтобы удалить ошибку.
Чтобы установить значения по умолчанию для аргументов, у вас есть несколько вариантов.
Проверьте аргумент для значения
undefined
:if (typeof start === "undefined") { start = 0; }
Обратите внимание, что это не делает различий между
start
будучи полностью обделеннымundefined
,использование
arguments.length
:if (arguments.length < 3) { start = 0; }
Обратите внимание, что на некоторых двигателях используется
arguments
заметно замедляет функцию, хотя это не та проблема, в которой она была, и, конечно, это не имеет значения, за исключением очень немногих функций, которые часто вызываются.Используйте необычайно мощный JavaScript
||
оператор в зависимости от того, для чего рассмотрен аргумент. В вашем случае, например, где вы хотите, чтобы значение было0
по умолчанию вы можете сделать это:start = start || 0;
Это работает, потому что, если вызывающий предоставляет "истинное" значение,
start || 0
будет оцениваться до заданного значения (например,27 || 0
является27
); если вызывающая сторона предоставляет какое- либо значение фальси,start || 0
будет оценивать0
, Значения "фальси"0
,""
,NaN
,null
,undefined
и конечноfalse
, "Истинные" значения - это все значения, которые не являются "ложными".