function fkey(a) {
a || (a = {});
if (!a.fkey) a.fkey = $("input[name='fkey']").attr("value");
return a
}
我猜a
其實是一個函數,但是怎麼理解(!a.fkey)
?這是什麼意思?
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