我想将JavaScript对象作为参数传递

时间:2010-12-19 17:09:54

标签: javascript

function foo(o){
    o=o || {};
}

foo(one:1); // ???
    alert(foo(one); // ???


foo(one:1,two:2,three:3) // ???
    alert(foo(one,two,three)); // ???

这段JavaScript究竟做了什么?

o = o || {};

我见过很多代码。

2 个答案:

答案 0 :(得分:4)

表达式

o = o || {};

装置

  

将变量“o”的值解释为布尔值。如果该值为“true”,则将“o”设置为其当前值。如果为“false”,则设置“o”以引用新的Object实例。

重点是确保“o”不为空,并将其初始化为新的Object实例(如果是)。

就调用该函数而言,您需要使用“object literal”表示法:

foo({ key1: value, key2: value, ... });

编辑 - 如评论中所述,“o”值的解释作为布尔值是一个相当有趣的主题。在这种特殊情况下, intent 是检查“o”是否为空。 “o”的值可以评估为false可能需要在这里区别对待,但显然没有足够的背景知道。

答案 1 :(得分:2)

你会创建你的对象

var arg = {key: val};

然后

var result = foo(arg);

将作为参数的对象传递给函数。如果你的函数可以使用多个arg,那么当你定义函数时

   var theFunction = function(arg1, arg2, arg3) {
        // arg1, arg2, and arg3 are all references in this function
   }

这样arg1,arg2和arg3被定义为参数。 Javascript具有一定的灵活性,您可以根据需要传递尽可能多的参数;使用显式参数定义函数是一个很好的设计,因此API很清楚。但是,有些情况下你只是不知道,所以在Javascript中你可以得到所有使用'arguments'变量传递的参数。 Javascript使这个变量在所有函数中都可用。但你应该很少使用它。这是一个带例子的链接

http://www.seifi.org/javascript/javascript-arguments.html

 o = o || {};

将变量“o”设置为o,或者如果未定义o,则为空对象文字。它基本上初始化变量,如果它是'falsy'。这是一种防止空对象问题的技术。