处理在javascript中作为参数传递的空对象

时间:2013-11-07 08:16:38

标签: javascript function arguments

美好的一天。

我有这个问题:我必须提供一种方法将一些可选参数传递给javascript函数,这很简单,好的。我决定将所有参数都作为一个对象,因此任何需要调用该函数的人都必须提供参数的名称。但大多数时候,编辑只是简单地用整个参数对象调用函数,而不省略空参数,因为参数是通过另一种方式传递给页面的(让我们说在查询字符串中,但它并不重要)。 / p>

这就是我如何制作这个功能:

function playAnimation(options) {
var timeOutAnimation = options.animationDuration || 15;
var backgroundColor = options.color ; // this argument will be always present, so no default.
//more code...
}

这是调用(我使用php代码作为示例)

$(document).ready(function(){
    var opt = {
        animationDuration: '<?php echo $_GET['stopAnimationAfter'] ?>', //could be a number, or nothing.
            color: 'black'
        }
    playAnimation(opt);     
});

问题是参数被传递并且接缝它永远不会落在默认值上。我无法改变调用函数的方式(即检查“get”参数的可用性并相应地构建函数调用,我必须找到一种方法来测试我的javascript中的参数。

有没有一种安全的方法可以这样做,比如options.animationDuration ===“undefined”(doens't working)还是什么?

解决方案:在调用中围绕每个参数放置'',使参数为满或相应为空。然后我可以测试它们。

1 个答案:

答案 0 :(得分:1)

您可以使用:

function playAnimation(options) {
    options = options || {}
    var timeOutAnimation = options.animationDuration || 15;
    var color = options.color;
}

如果空对象不存在,则将其设置为空对象。如果你愿意,你也可以检查这样的未定义:

if(typeof options === "undefined") {
    // options not passed
}

以下是fiddle演示。