Теперь я видел 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
.