函数中的默认值 - Javascript

时间:2013-12-15 12:26:10

标签: javascript

在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开发人员工具说:

  

未捕获的语法错误:意外的令牌=

5 个答案:

答案 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
}

另一个不错的模式是使用参数作为参数。这有两个好处

  1. 参数顺序并不重要
  2. 实现默认参数很容易
  3. <强>代码

    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";
}