Javascript没有传递所有参数

时间:2010-08-02 03:18:46

标签: javascript

是否可以在不提供所有参数的情况下调用Javascript函数?

我遇到一行代码没有多大意义,除非我假设在Javascript中提供所有参数都不是必需的?

错过的参数是一个布尔值,所以我可以进一步假设Javascript中未定义的布尔值等于'false'吗?

3 个答案:

答案 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');