JavaScript函数默认参数无法正常工作

时间:2018-03-27 08:05:12

标签: javascript html function ecmascript-6

根据ES6,我们可以提供参数的默认值(这里我为第二个参数提供值0)。现在,如果我提供的值20& null在功能上,按照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

2 个答案:

答案 0 :(得分:8)

  

现在,如果我提供的价值为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




答案 1 :(得分:2)

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

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

alert(alpha(20));