2013-11-04 71 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作为函数调用,那么将抛出异常并且脚本将停止。这个测试是为了防止这种情况发生。

相关问题