我希望 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_after
delete_after
"my default here"
如果要传入假值,即 、、 或 ,则此方法不起作用。如果你需要传递假值,你需要使用Tom Ritter答案中的方法。false
null
undefined
0
""
在处理函数的多个参数时,允许使用者在对象中传递参数参数,然后将这些值与包含函数默认值的对象合并通常很有用
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】栏目查找您需要的精美模板。