现在,我已经看到了两种确定参数是否已传递给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);
}
根据Juan的评论,最好将Tom的建议更改为:
function Test(argument1, argument2) {
if(argument2 === undefined) {
argument2 = 'blah';
}
alert(argument2);
}
argument2 || 'blah';
如果argument2
为false
(!),将导致'blah' ,而不仅仅是未定义的结果。 如果argument2
为boolean,并且false
为其传递了函数,则尽管argument2
定义正确,该行仍将返回“ blah”。
argument2
是,或0
,则存在相同的问题。''
null