这可能是一个结点的问题,但我不明白为什么这个工程:Javascript解析/评估订单?
<script type="text/javascript">
alert(foo);
function foo() { }
</script>
此提醒“函数foo(){}”,但我预计警惕函数foo之前评估是定义。有人可以解释我对分析/评估订单不了解的内容,或者将我指向一个资源吗?
这可能是一个结点的问题,但我不明白为什么这个工程:Javascript解析/评估订单?
<script type="text/javascript">
alert(foo);
function foo() { }
</script>
此提醒“函数foo(){}”,但我预计警惕函数foo之前评估是定义。有人可以解释我对分析/评估订单不了解的内容,或者将我指向一个资源吗?
与PHP一样,JavaScript在代码运行之前跟踪顶级function
声明。 但是,您可以通过使用分配绕过自动功能:
var a = function a() { }
A必须阅读有关类型的JavaScript函数的定义。
函数声明提升到顶部,因此宣布第一位的。
可以通过分配他们改变这种行为,给一个变量,像这样
var a = function() {
// do it
};
这个变量a
分配给一个匿名函数。
请注意,函数仍然会在IE的'var'声明之前由于严重[bug](http://groups.google.com/group/comp.lang.javascript/msg/5b508b03b004bce8)出现在所有JScript版本上,因为函数表达式被命名。 – CMS 2010-04-30 04:09:18
@CMS有趣的小笔记。这会影响所有版本的IE吗? – alex 2010-04-30 04:21:28
@alex,是** IE的所有**版本,包括IE 9平台预览! (我真的很失望),这个bug甚至比它更糟糕,它创建了两个函数对象,例如'var foo = function bar(){};警报(FOO ===巴); // false!' – CMS 2010-04-30 04:27:37