在PHP中,我们可以定义函数的参数值,如果它没有设置(调用),那么例如:
<?php
function blah($arg = false){
var_dump($arg);
}
?>
在上面的示例中,如果我们调用函数:
<?php
blah();
// ==> out put will be: false;
blah(true);
// ==> out put will be: true;
?>
所以我们可以为参数定义一个值,如果它们在我们调用函数时没有被解决,那么如何在javascript函数中实现它?
我完全喜欢PHP:
<script>
function blah(arg = false){
//...
}
</script>
上面的代码在Mozilla Firefox中运行得很好,但在Chrome中,当我删除括号中的= false
时,该功能无法正常工作并修复,Chrome开发人员工具说:
未捕获的语法错误:意外的令牌=
答案 0 :(得分:3)
这在Javascript中是不可能的。
请尝试使用此Conditional Operator
语句:
<script>
function blah(arg){
arg = typeof arg !== 'undefined' ? arg : 'someValue';
}
</script>
其中'someValue'是arg
变量在没有传递给blah()
函数的参数时将获得的默认值。
答案 1 :(得分:2)
这是在javascript IMO中实现默认参数的最简洁模式。
function (arg) {
arg = arg || 'defaultVale';
}
但是,如果您希望arg的值为某个虚假值,则可能会失败,例如0, false, NaN, null
使用它并不是真的。
此版本通过明确地与undefined进行比较来防止这种情况。
function (arg) {
arg = arg === undefined ? 'defaultVale' : arg;
// As T.J Crowder pointer out if not in strict mode or if the code will run
// in an IFrame use typeof arg === "undefined" instead of directly
// comparing with undefined
}
另一个不错的模式是使用参数作为参数。这有两个好处
<强>代码强>
var defaults = {
arg1: 10,
arg2: 20
};
var f = function (args) {
args = jQuery.extend(true, args, defaults); //jQuery
args = _.defaults(args, defaults); // Underscore
};
f({
a: 25 //Use a non default value
});
答案 2 :(得分:0)
在JavaScript中没有默认参数。 只需编写如下代码:
function test(arg) {
if(arg) {
// do something as arg is defined.
} else {
// do something as arg is undefined.
}
}
test(true); // arg is defined
test(); // arg is undefined
答案 3 :(得分:0)
在Js中,您不能拥有参数的默认值。您可以使用typeof
运算符检查数据是否为已知类型:
function blah(arg)
{
if (typeof arg === 'undefined')
{
arg = false;
}
}
或以短路方式设定其值
function blah(arg)
{
arg = arg || false;
}
例如,在coffeescript中,您可以使用
进行设置 blah = (arg = "mydefaultvalue") ->
被翻译成
blah = function(arg)
{
if (arg == null)
{
arg = "mydefaultvalue";
}
}
答案 4 :(得分:0)
简单变化
function defaulter(p1) {
p1 = p1 || "default";
}