首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘`arguments`’不能获得‘`Destructuring`’参数的默认值?

‘`arguments`’不能获得‘`Destructuring`’参数的默认值?
EN

Stack Overflow用户
提问于 2019-11-30 05:14:01
回答 4查看 47关注 0票数 0

代码语言:javascript
复制
const supersearch = function({a = 1, b}) {
  console.log(arguments[0]);
  console.log(a, b);
};

supersearch({b: 2});

预期成果:

代码语言:javascript
复制
{
  "a": 1,
  "b": 2
}

1 2

但实际结果:

代码语言:javascript
复制
{
  "b": 2
}

1 2

我该怎么得到arguments

医生:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

最新情况:

我现在能想到的一种方法,有更好的方法来写吗?

代码语言:javascript
复制
const supersearch = function({a, b}) {
  console.log({...{a: 1}, ...arguments[0]});
  console.log(a, b);
};

supersearch({b: 2});

EN

回答 4

Stack Overflow用户

发布于 2019-11-30 06:53:19

嗨,你定义了一个对象类型的参数,这样就发生了。

代码语言:javascript
复制
const supersearch = function({}) {
  alert(JSON.stringify(arguments[0]));
  alert(arguments[0].a + '' + arguments[0].b);
};

supersearch({a:1 ,b: 2}); 

票数 0
EN

Stack Overflow用户

发布于 2019-11-30 10:09:24

也许你在找这个

代码语言:javascript
复制
  const supersearch = function({a = 1, b, ...rest}) {
  console.log({a,b});
  console.log(a, b);
};

supersearch({b: 2});

票数 0
EN

Stack Overflow用户

发布于 2019-11-30 10:23:06

我建议如下:

代码语言:javascript
复制
 const supersearch = function(inputParams) {
          const defaulParams = { a: 1};
          const allParams = {...defaultParams, ...inputParams}; 
          const {a,b} = allParams;
          console.log(allParams);
          console.log(a, b);
        };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59113384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档