javascript解释器中存在一种变量声明被提升(hoisting)的机制,即变量(函数)的声明会被提升到作用域的最前面。即使把声明代码写在最后面。
alert(foo); //function foo(){} alert(bar); //undefined var bar = function(){}; function foo(){}; alert(foo); //function foo(){} alert(bar); //function bar(){}
从上例也能看出函数声明和函数表达式的不同的一个地方。
在javascript中也要注意另外一个变量和函数重名的问题:
function foo(){ //body } foo = 5;