首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅对部分params对象的ES6默认值

仅对部分params对象的ES6默认值
EN

Stack Overflow用户
提问于 2016-07-18 15:50:59
回答 2查看 248关注 0票数 2

给定如下函数,为了能够调用showToast({ text: "some text"})并仍然获得params.autoHideparams.action的默认值,应该使用什么正确的语法?

代码语言:javascript
复制
function showToast (params = {text: 'Something happened!', autoHide: false, action: 'CLOSE'}) {
    //noinspection JSUnresolvedFunction
    const toast = $mdToast.simple()
        .textContent(params.text)
        .position('top right')
    ;

    if (!params.autoHide) {
        toast.hideDelay(false);
    }
    if (params.action) {
        //noinspection JSValidateTypes
        toast.action(params.action); // label for close btn
    }

    $mdToast.show(toast);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-18 16:09:11

您也可以在参数列表中使用对象析构。唯一需要更改的是,您不能通过params对象访问参数:

代码语言:javascript
复制
function foo({text = "Hi", autoHide = false, action = "CLOSE"} = {}) {
  console.log(text + " " + autoHide + " " + action)
}

foo({text: "asd"});

巴贝尔/瑞尔

请注意析构对象的= {}默认值。这使得在不使用单个参数( foo(); )的情况下调用函数成为可能。

票数 2
EN

Stack Overflow用户

发布于 2016-07-18 16:07:37

您可以使用参数对象析构来实现这一点:

代码语言:javascript
复制
function showToast({text = 'Something happened!', autoHide = false, action = 'CLOSE'} = {}) {
    //noinspection JSUnresolvedFunction
    const toast = $mdToast.simple().textContent(text).position('top right');

    if (!autoHide) {
        toast.hideDelay(false);
    }
    if (action) {
        //noinspection JSValidateTypes
        toast.action(action); // label for close btn
    }

    $mdToast.show(toast);
}

showToast({ text: "some text" }) // defaults autoHide to false, action to 'CLOSE'

“设置函数参数的默认值”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38441086

复制
相关文章

相似问题

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