2010-10-25 158 views
0
function fkey(a) { 
    a || (a = {}); 
    if (!a.fkey) a.fkey = $("input[name='fkey']").attr("value"); 
    return a 
} 

我猜a其實是一個函數,但是怎麼理解(!a.fkey)這是什麼意思?

回答

1

a不是函數,它是一個對象。

a.fkey正在訪問a對象的成員。在前面的!意味着如果成員不存在或值是falsy,該表達式評估爲truefkey構件被設置爲$("input[name='fkey']").attr('value');,其也可以與.val()代替.attr('value')

2

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

0

功能您發佈完成如果它不存在,則將名爲fkey的成員添加到a!a.fkey部分基本上意味着「不存在」(這是有效的,因爲一旦分配,成員不會評估爲false)。

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