Javascript 默认数组/对象参数值

标签 javascript arrays function

我正在想办法将函数数组参数设置为默认值(一个 ES5 而不是新的 ES6/2015)。

我的第一个想法是:

window.fnc = function(args){
    defaults = {
        height: 120,
        width: 32
    }

    args = args || defaults;

    console.log(args['height']+'x'+args['width'])

}

并且会像这样使用:

fnc({height:45, width:12}); //Result: 45x12

fnc(); //Result: 120x32

这工作正常。但是当然在第 7 行,args 被默认值替换或者不是,所以如果两个值中的任何一个丢失,我都会得到一个 undefined

fnc({height:45}); //Result: 45xundefined

我该怎么做?

最佳答案

我不时使用这个代码片段:

 args = args || defaults;
     for (var opt in defaults) {
        if (defaults.hasOwnProperty(opt) && !args.hasOwnProperty(opt)) {
            args[opt] = defaults[opt];
        }
    }

基本上,您遍历默认参数 (for (var opt...) 的所有值,并检查参数的值是否丢失。(if (defaults.has...)。如果缺少,请添加默认值 (args[opt] =...)。

(我想我什至在 SA 上找到了这个片段,但不确定。如果是这样,我会添加指向原始答案的链接。)

关于Javascript 默认数组/对象参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34539017/

相关文章:

python - 从数组中取出一个范围

Python 如果 N 个变量中有一个以上为真

javascript - 将 SVG 元素拖到新位置

mysql - 在 cgi-bin/test.pl 使用 "ident"时不允许裸字 "strict subs"

javascript - 聊天框文本转义 <div>

c++ - 在 C++ 中发布二维数组的打印元素

php - 此功能正在检查什么?

function - 以下涉及 Go 中 channel 的函数参数有什么区别?

javascript - Node.js 生成 html

javascript - Node 异步库 filterLimit 总是返回 undefined