JavaScript函数中的默认参数值[重复]

2020/10/12 18:41 · javascript ·  · 0评论

可能重复:
如何为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做到这一点?

如果尝试在函数参数中分配值,则会收到错误消息

缺少)形式参数后

在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);

从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之前的版本:

如果要处理数字,字符串,布尔值NaN或的值,则null可以简单地使用

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

param || DEFAULT_VALUE

例如,

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

虽然这看起来简单,还挺有效,这是限制性的,因为可以反模式||上的所有falsy值进行操作(""nullNaNfalse0)太-这使得这种方法,不能指定设置了一个param作为参数传递的falsy值。

因此,为了undefined明确地仅处理值,首选方法是:

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

您必须检查参数是否未定义:

function func(a, b) {
    if (a === undefined) a = "default value";
    if (b === undefined) b = "default value";
}

另请注意,此问题之前已得到解答

我从未在JavaScript中看到过这种方式。如果您希望具有可选参数的函数在省略参数的情况下获得分配的默认值,则可以采用以下方法:

 function(a, b) {
      if (typeof a == "undefined") {
        a = 10;
      }

      if (typeof b == "undefined") {
        a = 20;
      }

      alert("a: " + a + " b: " + b);
    }
function func(a, b)
{
  if (typeof a == 'undefined')
    a = 10;
  if (typeof b == 'undefined')
    b = 20;
  // do what you want ... for example
  alert(a + ',' + b);
}

简而言之

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

  // do what you want ... for example
  alert(a + ',' + b);
}

您不能为功能参数添加默认值。但是您可以这样做:

function tester(paramA, paramB){
 if (typeof paramA == "undefined"){
   paramA = defaultValue;
 }
 if (typeof paramB == "undefined"){
   paramB = defaultValue;
 }
}
本文地址:http://javascript.askforanswer.com/javascripthanshuzhongdemorencanshuzhizhongfu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!