【问题标题】:JavaScript function default parameter is not working properlyJavaScript 函数默认参数无法正常工作
【发布时间】:2018-09-05 13:02:46
【问题描述】:

根据 ES6,我们可以提供参数的默认值(这里我为第二个参数提供值 0)。现在,如果我在函数中提供 20null 的值,根据 ES6,它现在应该将值设为 20 和 0,因此警报必须 ping 20,但它正在警报 NaN。有人可以帮我吗?

function alpha(a, b = '0') {
  return (a != null ? '$' + (parseFloat(a) + parseFloat(b)) : "");
}

alert(alpha(20, null)); //output is NaN

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters

【问题讨论】:

  • 您链接到的文档明确提到null和其他falsey值是不是 替换……

标签: javascript html function ecmascript-6


【解决方案1】:

您在参数b 中传递null,因此将null 分配给b。要使默认值起作用,您应该省略函数中的第二个参数。

function alpha(a, b ='0'){
 return (a!=null ?  '$' + (parseFloat(a) + parseFloat(b)) :  ""); 
}

alert(alpha(20));

【讨论】:

    【解决方案2】:

    现在,如果我在函数中提供 20 和 null 的值,根据 ES6,它现在应该将值设为 20 和 0

    不。 :-) null 不会被默认替换。唯一被默认值替换的值是undefined(无论您是明确给出它,还是直接省略该参数)。

    所以:

    function alpha(a, b = '0') {
      return (a != null ? '$' + (parseFloat(a) + parseFloat(b)) : "");
    }
    
    console.log(alpha(20));            // Gets default
    console.log(alpha(20, undefined)); // Gets default
    console.log(alpha(20, null));      // Does not get default

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多