【发布时间】:2014-04-17 05:49:23
【问题描述】:
我阅读了 Javascript Hoisting 的概念。它非常令人困惑,但我看到了一些示例并了解了提升的实际作用。
所以基本上“提升是 JavaScript 将所有声明移动到当前作用域的顶部(到当前脚本或当前函数的顶部)的默认行为。”
但我无法理解以下实现:
var is_android = true;
if (is_android) {
function foo() {
alert('I am Android');
}
} else {
function foo() {
alert('I am NOT Android');
}
}
foo();
输出在警告框中显示“我不是 Android”。
我想知道为什么即使 is_android 的值为 true 也会从 else 块调用 foo()。
任何帮助将不胜感激。
【问题讨论】:
-
我也坚持 JavaScript 的相同行为
-
忘记“提升”。请记住,在执行任何代码之前,都会处理所有函数和变量声明。哦,菲利克斯说过……
-
您的代码在某些浏览器中实际上是一个错误,特别是因为它几乎永远不会产生您真正想要的行为。
-
@NiettheDarkAbsol :这是工作示例,我在许多引用此示例的文档中都看到过。
标签: javascript function hoisting