Зараз я бачив 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
.