根据网上看的文章,小结如下:
JavaScript代码是从上到下顺序执行的。
JavaScript解释引擎在执行任何函数调用之前,首先会在全局作用域中注册以定义式创建的函数,然后再依次执行函数调用。由于注册函数时,后定义的函数重写了先定义的函数,因此无论调用语句位于何处,执行的都是后定义的函数。相反,对于声明式创建的函数,JavaScript解释引擎会像对待任何声明的变量一样,等到执行调用该变量的代码时才会对变量求值。
JS加载包含预编译和执行两个阶段。 编译阶段会对所有的var变量和function进行扫描,并将var变量初始化为undefined类型,而function则被初始化为函数值。到了执行阶段,JS从上面往下面依顺序执行,遇到var变量便进行赋值(因此,在赋值之前进行调用的话会出现错误).遇到函数变量的话会从活动对象中寻找函数。
最好在页面加载完成之后再写代码。(ready)
相关文章如下:
http://qianduanblog.com/post/js-learning-16-functions-and-variables-execution-order-different-small-study.html
http://www.cnblogs.com/CBDoctor/p/3745246.html
http://blog.csdn.net/jaychouliyu/article/details/6213890
http://segmentfault.com/q/1010000002555922
http://www.jquerycn.cn/a_6598
http://www.uml.org.cn/oobject/201203213.asp