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 || {};
我见过很多代码。
答案 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'。这是一种防止空对象问题的技术。