javascript两种定义function的区别
大家都知道以下两种定义function的方式
为什么发生了这种情况?我们添加以下代码:window.onload = mychange; alert(mychange);
这时窗口显示undefined!所以根本不可能往下执行。所以从这点可以分析出,javascript解释器是按前后顺序边解释边执行的。
那用第二种方式为什么可以?因为用第二种方式定义的function,会最先初始化,就类似于java中static属性。
看到这,新的问题来了,上面例子中的show方法,为什么没有问题?
因为调用mychange方式,是在window完成加载后才执行的,所以show已经初始化了,我们最后来看下顺序:
1、解释mychange方法
2、解释window.onload = mychange,发现调用的是onload方法,所以此处暂停,继续往下解释
3、解释var show 这段script,并加载window中的所有内容
4、加载完成,执行mychange方法