JavaScript 函数中的默认参数值

2022-08-30 00:53:42

可能的重复:
如何为javascript函数的参数创建默认值

在 PHP 中:

function func($a = 10, $b = 20){
  // if func() is called with no arguments $a will be 10 and $ b  will be 20
}

你怎么能用JavaScript做到这一点?

如果我尝试在函数参数中分配值,则出现错误

形式参数后缺少 )


答案 1

在javascript中,你可以调用一个没有参数的函数(即使它有参数)。

因此,您可以添加默认值,如下所示:

function func(a, b){
   if (typeof(a)==='undefined') a = 10;
   if (typeof(b)==='undefined') b = 20;

   //your code
}

然后你可以调用它喜欢使用默认参数。func();

这是一个测试:

function func(a, b){
   if (typeof(a)==='undefined') a = 10;
   if (typeof(b)==='undefined') b = 20;

   alert("A: "+a+"\nB: "+b);
}
//testing
func();
func(80);
func(100,200);

答案 2

ES2015 起:

从 ES6/ES2015 开始,我们在语言规范中有默认参数。所以我们可以做一些简单的事情,比如,

function A(a, b = 4, c = 5) {
}

或与ES2015解构相结合,

function B({c} = {c: 2}, [d, e] = [3, 4]) {
}

有关详细说明,

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/default_parameters

默认函数参数允许在未传递值或未定义时使用默认值初始化形式参数。

ES2015之前:

如果要处理不是数字、字符串、布尔值的值,或者您可以简单地使用NaNnull

(因此,对于您计划从不发送的对象,数组和函数,您可以使用)null

param || DEFAULT_VALUE

例如

function X(a) {
  a = a || function() {};
}

虽然这看起来很简单并且有点有效,但这是限制性的,并且可能是一种反模式,因为对所有falsy值(,,,,)也进行了操作 - 这使得这种方法无法为作为参数传递的falsy值分配参数。||""nullNaNfalse0

因此,为了仅显式处理值,首选方法是:undefined

function C(a, b) {
  a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a;
  b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b;
}