这是什么意思?
问题描述:
function fkey(a) {
a || (a = {});
if (!a.fkey) a.fkey = $("input[name='fkey']").attr("value");
return a
}
我猜a
其实是一个函数,但是怎么理解(!a.fkey)
?这是什么意思?
答
a
不是函数,它是一个对象。
a.fkey
正在访问a
对象的成员。在前面的!
意味着如果成员不存在或值是falsy,该表达式评估为true
和fkey
构件被设置为$("input[name='fkey']").attr('value');
,其也可以与.val()
代替.attr('value')
答
a
是在这种情况下的一个对象,它设置了.fkey
属性,如果它没有设置(或者是虚假的)。
对于SO聊天,这允许fkey
输入既可以从页面提供,也可以从页面获得,它是页面底部的隐藏输入,填充了用于验证请求的值等。
目前它总是从DOM拉动,所以真的该功能只是增加属性,它会息事宁人如果它虽然提供。
答
功能您发布完成如果它不存在,则将名为fkey
的成员添加到a
。 !a.fkey
部分基本上意味着“不存在”(这是有效的,因为一旦分配,成员不会评估为false
)。
答
该函数采用一个object
并增加了一个fkey
属性给它,这将是<input name="fkey">
字段的值。
例如:
<input name="fkey" value="WATCH ME HERE">
var temp = {}; // make a new object
fkey(temp); // expand it with fkey's value
alert(temp.fkey); // WATCH ME HERE
@马克 - 请不要纠正答案 - 我明确表示 “falsy”,** **不 “假”。 – 2010-10-25 14:53:21
这太奇怪了,我们都使用相同的术语。 ;-) – 2010-10-25 14:57:20
@Jacob - 这是常用术语afaik:http://www.google.com/search?q=javascript+falsy – 2010-10-25 14:59:37