Теперь я видел 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';приведет к «бла», если argument2есть false(!), А не просто, если оно не определено. Если argument2это логическое значение, и falseдля него передается функция , эта строка вернет «бла», несмотря на argument2то, что она определена правильно .
argument2есть 0, ''или null.