2013-11-04 69 views
1

目前谷歌塗鴉的標記看起來是這樣的:「window.functionname && functionname()」是做什麼的?

<img alt="84. Geburtstag von Shakuntala Devi" border="0" height="162" src="/logos/doodles/2013/shakuntala-devis-84th-birthday-5315657683959808-hp.gif" title="84. Geburtstag von Shakuntala Devi" width="700" id="hplogo" onload="window.lol&amp;&amp;lol()" style="padding-top:45px"> 

與最有趣的部分是的onload = 「window.lol & & LOL()

只是出於好奇:是什麼window.functionname & & functionname()居然呢?爲什麼不只是調用函數?是否有任何好處,還是僅僅因爲它可以完成而炫耀? ;)

+2

'window.functionname退出,然後執行functionname()' – rab

+0

這不會在舊瀏覽器中引發錯誤,而這種錯誤必須通過檢查typeof(window.functionname)!='undefined'來捕獲嗎? – Connum

+1

@Connum:不,不存在的對象屬性一直未定義,沒有拋出錯誤,undefined從Netscape原來的JavaScript實現以來,在所有瀏覽器上總是被評估爲false。你在想的場景是'variable_name && variable_name()',它會在所有瀏覽器(新的或舊的)上拋出一個錯誤。 – slebetman

回答

3

&&將返回左側,如果它是假的,否則它會返回右側。

如果window.functionname未定義,那麼它將是錯誤的。

只有在定義時纔會評估右側並調用函數。

如果您嘗試將undefined作爲函數調用,那麼將拋出異常並且腳本將停止。這個測試是爲了防止這種情況發生。

相關問題