第一次调用这个函数时 console.log('a') 会被执行,打印出 a,全局变量 a 被重定义并被赋予了新的函数,当再一次调用时,console.log('b') 被执行。
用处:因为各浏览器之间的行为差异,经常会在函数中包含了大量的 if 语句,以检查浏览器特性,解决不同浏览器的兼容问题。
每次调用 addEvent 函数的时候,它都要对浏览器所支持的能力进行检查,首先检查是否支持 addEventListener 方法,如果不支持,再检查是否支持 attachEvent 方法,如果还不支持,就用 dom 0 级的方法添加事件。
这个过程,在 addEvent 函数每次调用的时候都要走一遍,其实,如果浏览器支持其中的一种方法,那么它就会一直支持了,就没有必要再进行其他分支的检测了。也就是说,if 语句不必每次都执行,代码可以运行的更快一些。