function a(){}与var a=function(){}
据说是与js预编译有关
function a()
{
}
是定义一个函数.在预编译期声明了一个对象,指向一个函数
而
var a=function()
{
}
在预编译期只是声明了一个变量, 再运行期才会把函数指给a.
这个区别在使用闭包时,需要注意.
譬如如下代码
var Util = Util || (
function()
{
return {
count:function()
{
innerCount();//innerCount is not a function
}
};
//is wrong, undefined,未初始化,只有预编译阶段,没有运行。上边调用的时候,innerCount和函数还没有绑定。
var innerCount = function()
{
}
//is ok
function innerCount()
{
}
}
)();
var Util = Util || (
function()
{
//is ok, 运行过了.定义后再使用是ok的。
var innerCount = function()
{
}
return {
count:function()
{
innerCount();
}
};
//is ok
function innerCount()
{
}
}
)();