是否可以在不提供所有参数的情况下调用Javascript函数?
我遇到一行代码没有多大意义,除非我假设在Javascript中提供所有参数都不是必需的?
错过的参数是一个布尔值,所以我可以进一步假设Javascript中未定义的布尔值等于'false'吗?
答案 0 :(得分:11)
是的,如果未传入其他参数,则undefined
只会传入:)
例如:
function myFunc(param1, param2) {
alert(param1);
alert(param2);
}
这是一个有效的电话:
myFunc("string"); //alerts "string" then undefined
Give it a try here。如果您的问题中的问题与if(!param2)
类似,那么对于大多数用途,它将评估为true
,因为undefined ~= false
。值得注意的是,这不仅是可以接受的,而且非常通用,几乎每个库或框架都只需要将某些参数传递给大多数函数。
答案 1 :(得分:4)
添加Nick的回复,您可以:
// set the value to false if not passed
if (typeof(param2) === "undefined") param2 = false;
答案 2 :(得分:1)
您也可以在javascript中使用Variadic Functions。您实际上可以将任何类型/数量的参数传递给任何javascript函数,并使用arguments
来检索这些参数。
function PrintList()
{
for (var i = 0; i < arguments.length; i++)
{
document.write(arguments[i] + "<br />");
}
}
// Calls to Function
PrintList('Google');
PrintList('Google', 'Microsoft', 'Yahoo');
PrintList('Google', 'Microsoft', 'Yahoo', 'Adobe');