Зараз я бачив 2 способи визначення того, чи передано аргумент функції JavaScript. Мені цікаво, чи один метод кращий за інший, чи один із них просто поганий?
function Test(argument1, argument2) {
if (Test.arguments.length == 1) argument2 = 'blah';
alert(argument2);
}
Test('test');
Або
function Test(argument1, argument2) {
argument2 = argument2 || 'blah';
alert(argument2);
}
Test('test');
Наскільки я можу сказати, вони обоє призводять до одного і того ж, але я використовував лише перший раніше у виробництві.
Ще один варіант, як згадував Том :
function Test(argument1, argument2) {
if(argument2 === null) {
argument2 = 'blah';
}
alert(argument2);
}
Відповідно до коментаря Хуана, було б краще змінити пропозицію Тома на:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';в результаті буде "blah", якщо argument2це false(!), А не просто, якщо це не визначено. Якщо argument2булева функція, і функція передана falseдля неї, цей рядок поверне 'blah', незважаючи на argument2те, що він правильно визначений .
argument2є 0, ''або null.