如何检测JS参数是否有额外的文本?

时间:2014-07-23 15:09:46

标签: javascript function parameters

如果我有一个带参数(或参数)的函数,如下所示:

check('red', 'blue', 'arial')

我想知道的是你能有这样的文字:

check(background:'red', color:'blue', font:'arial')

在函数中我有一个if语句,所以如果参数或参数有背景:在它之前,它会在背景后将背景更改为参数:

    function check(one, two, three){
        if (one==background:one){
           document.body.style.background= one ;
            }
        }  

我知道这不起作用,你会怎么做呢?

我可以使用if语句,但可以对其进行编码以检测参数之前是否有'background:'吗?这有可能还是有更好的方法呢? 如果可能的话,我想使用纯JavaScript。

1 个答案:

答案 0 :(得分:3)

JavaScript不支持带标签的函数参数(la C#和其他语言)。但是,传输配置对象很容易:

function check(config) {
    // config.background
    // config.color
    // config.font
}

check({ background: 'red', color: 'blue', font: 'arial' });

如果您需要或希望该函数也支持使用常规参数调用,您始终可以检测参数类型:

function check(background, color, font) {
    if(typeof background === 'object') {
        color = background.color;
        font = background.font;
        background = background.background;
    }
    // background, color, and font are what you expect
}

// you can call it either way:
check('red', 'blue', 'arial');
check({ background: 'red', color: 'blue', font: 'arial' });

最后,如果您不想(或以某种方式不能)修改原始功能,您可以将其包装起来:

var originalCheck = check;
check = function(config) {
    originalCheck(config.background, config.color, config.font);
}