这是什么意思?

这是什么意思?

问题描述:

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,该表达式评估为truefkey构件被设置为$("input[name='fkey']").attr('value');,其也可以与.val()代替.attr('value')

a是在这种情况下的一个对象,它设置了.fkey属性,如果它没有设置(或者是虚假的)。

对于SO聊天,这允许fkey输入既可以从页面提供,也可以从页面获得,它是页面底部的隐藏输入,填充了用于验证请求的值等。

目前它总是从DOM拉动,所以真的该功能只是增加属性,它息事宁人如果它虽然提供。

+7

@马克 - 请不要纠正答案 - 我明确表示 “falsy”,** **不 “假”。 – 2010-10-25 14:53:21

+0

这太奇怪了,我们都使用相同的术语。 ;-) – 2010-10-25 14:57:20

+2

@Jacob - 这是常用术语afaik:http://www.google.com/search?q=javascript+falsy – 2010-10-25 14:59:37

功能您发布完成如果它不存在,则将名为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