Javascript解析/评估顺序?

时间:2010-04-30 03:54:14

标签: javascript

这可能是个问题,但我不明白为什么会这样:

<script type="text/javascript">
    alert(foo);
    function foo() { }
</script>

这会警告“function foo(){}”,但我希望在定义函数foo之前评估警报。有人可以解释一下我对解析/评估顺序不了解的内容,或者指向一个资源吗?

3 个答案:

答案 0 :(得分:3)

JavaScript与PHP一样,在代码运行之前跟踪顶级function声明。 但是,您可以使用分配来绕过自动功能:

var a = function a() { }

答案 1 :(得分:0)

必须阅读JavaScript中的函数定义类型。

Named Function Expressions Demystified

答案 2 :(得分:0)

函数声明被提升到顶部,因此首先声明。

您可以通过将它们分配给类似的变量

来更改此行为
var a = function() {
   // do it
};

这会将变量a指定给匿名函数。