函数参数的默认值?
所以我一直这样做,只要我记得,但我很好奇,如果这真的是我应该做的。 你写一个函数接受一个参数,所以你预期它有一个值,但如果没有,你有一个很好的理由来默认它,说零。 我目前所做的是编写一个辅助函数:
function foo() { return foo(0); };
function foo(bar) { ... };
我只是遇到了一个我这样做的实例,在理解其背后的逻辑之前,我奇怪地看了几秒钟。 我来自php,它是微不足道的:
function foo(bar=0) { ... }
有没有我不知道的JavaScript替代品?
你不能在JavaScript中重载函数。 相反,使用基于对象的初始化,或检查值,并分配一个默认值,如果没有提供。
在你的例子中,第二个函数foo(bar)
将取代第一个函数。
这是一个使用对象初始化的函数。
function foo(config) {
extend(this, config);
}
其中extend
是一个将配置对象与当前对象合并的函数。 它类似于jQuery中的$.extend
方法,或MooTools的$extend
方法。
调用该函数并将其传递给名为键值对
foo({ bar: 0 });
另一种初始化方式是查看提供的值,如果未给定值,则分配默认值
function foo(bar) {
bar = bar || 0;
}
只要酒吧不是一个虚假的价值,这就行得通了。 所以foo(false)
或foo("")
仍然会将bar
初始化为0
。 对于这种情况,请进行明确的检查。
function foo(bar) {
bar = (typeof bar == 'undefined' ? 0 : bar);
}
在JavaScript中,如果用户没有传入参数,则参数将不确定。您可以使用|| 运算符如果未定义则设置参数的值:
function foo(bar) {
bar = bar || 0;
...
}
我知道的最简单的方法是测试一个值,如果没有找到值,则将其设置为默认值。 我还没有遇到过所有的班轮,这是我得到的最好的。
如果期待一个字符串值使用这个。 默认值将触发这些值:[undefined,null,“”]
function foo(str) {
str = !!str ? str : 'bar';
...
}
如果期待一个数字或布尔值。 这允许0和false作为值。 默认值将在[undefined,null,{},函数]上触发
方便使值参数只接受数字,布尔值和字符串等原始值
function foo(val) {
val= !!val == val || val*1 ? val : 10;
...
}
如果您正在寻找像{}这样的对象进行测试,有关于这样做的文档,但并不那么简单。
链接地址: http://www.djcxy.com/p/96307.html上一篇: Default value for function parameter?
下一篇: Javascript hoisting and variable assignment (with no declaration)