这是什么意思?

时间:2010-10-25 14:43:37

标签: javascript jquery

function fkey(a) {
    a || (a = {});
    if (!a.fkey) a.fkey = $("input[name='fkey']").attr("value");
    return a
}

我猜a实际上是一个函数,但是如何理解(!a.fkey)

4 个答案:

答案 0 :(得分:2)

在这种情况下,

a是一个对象,如果它没有设置(或者是假的),它就会在其上设置.fkey属性。

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

目前它始终从DOM中提取,所以这个函数真的只是添加了属性,如果提供它,不管它。

答案 1 :(得分:1)

a不是一个函数,它是一个对象。

a.fkey正在访问a对象的成员。前面的!表示如果成员不存在或值为falsy,则表达式的计算结果为truefkey成员设置为$("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