function fkey(a) {
a || (a = {});
if (!a.fkey) a.fkey = $("input[name='fkey']").attr("value");
return a
}
我猜a
实际上是一个函数,但是如何理解(!a.fkey)
?
答案 0 :(得分:2)
a
是一个对象,如果它没有设置(或者是假的),它就会在其上设置.fkey
属性。
对于SO聊天,这允许从页面提供或获取fkey
输入,它是页面底部的隐藏输入,填充了用于验证您的请求的值等。
目前它始终从DOM中提取,所以这个函数真的只是添加了属性,如果提供它,将不管它。
答案 1 :(得分:1)
a
不是一个函数,它是一个对象。
a.fkey
正在访问a
对象的成员。前面的!
表示如果成员不存在或值为falsy,则表达式的计算结果为true
,fkey
成员设置为$("input[name='fkey']").attr('value');
,这可以也可以使用.val()
代替.attr('value')
答案 2 :(得分:0)
您发布的功能会将名为fkey
的成员添加到a
(如果该成员尚不存在)。 !a.fkey
部分实质上意味着“尚不存在”(这是有效的,因为一旦分配,成员就不会评估为false
)。
答案 3 :(得分:0)
该函数采用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