今天在h5开发app的过程中遇到了一个js问题,function的执行问题
在js中声明函数function有这两种方法
var A=function(){...}
或者
function A(){...}
第一种称之为变量引用函数,因为js允许函数作为一个值传递给变量,第二种是直接声明式函数
一直以为这两种没什么区别,然而,今天在使用过程中发现,当我使用第一种方式声明function的时候,如果如下这样:
document.getElementById("xx").addEventListener("tap", A);var A=function(){...}//点击tap时并不会执行A
原因很简单,如果使用第一种方法,即函数作为值赋给变量A,必须先声明A,并且赋值,一个基本的编程常识:没有声明过的变量不能使用(内存中根本不存在),变量声明必须在使用之前,实例中addEventListener根本得不到A!
然而话说回来,如果是第二种方法,即直接声明函数的方法,那么浏览器在获取DOM结束之后,function就已经在那里了,可调用
var 变量= 方式定义的函数,不能先调用函数,后声明,只能先声明函数,然后调用。
function方式定义函数可以先调用,后声明。
JavaScript中var变量引用function与直接声明function
原文地址:http://12883930.blog.51cto.com/12873930/1922871