首页 > JavaScript > JavaScript 函数具有我设置默认值的可选参数?

JavaScript 函数具有我设置默认值的可选参数?

上一篇 下一篇

我希望 JavaScript 函数具有我设置默认值的可选参数,如果未定义值,则使用这些参数(如果传递值则忽略)。在 Ruby 中,你可以这样做:

def read_file(file, delete_after = false)
  # code
end

这在 JavaScript 中有效吗?

function read_file(file, delete_after = false) {
  // Code
}

分割线

网友回答:

function read_file(file, delete_after) {
    delete_after = delete_after || "my default here";
    //rest of code
}

如果它不是值,这将分配给 的值,否则它将分配字符串 。有关更多详细信息,请查看Doug Crockford的语言调查,并查看操作员部分。delete_afterdelete_after"my default here"

如果要传入值,即 、、 或 ,则此方法不起作用。如果你需要传递值,你需要使用Tom Ritter答案中的方法。falsenullundefined0""

在处理函数的多个参数时,允许使用者在对象中传递参数参数,然后将这些值与包含函数默认值的对象合并通常很有用

function read_file(values) {
    values = merge({ 
        delete_after : "my default here"
    }, values || {});

    // rest of code
}

// simple implementation based on $.extend() from jQuery
function merge() {
    var obj, name, copy,
        target = arguments[0] || {},
        i = 1,
        length = arguments.length;

    for (; i < length; i++) {
        if ((obj = arguments[i]) != null) {
            for (name in obj) {
                copy = obj[name];

                if (target === copy) {
                    continue;
                }
                else if (copy !== undefined) {
                    target[name] = copy;
                }
            }
        }
    }

    return target;
};

使用

// will use the default delete_after value
read_file({ file: "my file" }); 

// will override default delete_after value
read_file({ file: "my file", delete_after: "my value" }); 

分割线

网友回答:

从 ES6/ES2015 开始,默认参数在语言规范中。

function read_file(file, delete_after = false) {
  // Code
}

只是工作。

参考:默认参数 – MDN

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

在 ES6 中,您可以通过解构来模拟默认命名参数:

// the `= {}` below lets you call the function without any parameters
function myFor({ start = 5, end = 1, step = -1 } = {}) { // (A)
    // Use the variables `start`, `end` and `step` here
    ···
}

// sample call using an object
myFor({ start: 3, end: 0 });

// also OK
myFor();
myFor({});

在ES2015之前

有很多方法,但这是我的首选方法 – 它允许你传入任何你想要的东西,包括 false 或 null。(typeof null == "object")

function foo(a, b) {
  a = typeof a !== 'undefined' ? a : 42;
  b = typeof b !== 'undefined' ? b : 'default_b';
  ...
}

分割线

网友回答:

我发现像这样简单的东西对个人来说更加简洁和可读。

function pick(arg, def) {
   return (typeof arg == 'undefined' ? def : arg);
}

function myFunc(x) {
  x = pick(x, 'my default');
} 

模板简介:该模板名称为【JavaScript 函数具有我设置默认值的可选参数?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 203次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-13
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
企业网站 微信文章 自适应 微信素材 微信图片 单页式简历模板 微信公众平台 微信模板 响应式 html5
您可能会喜欢的其他模板