【发布时间】:2011-04-13 03:18:12
【问题描述】:
alert(myVar1);
return false;
var myVar1;
以上代码在 IE、FF 和 Opera 中抛出错误,指出函数中必须有 return 语句。但它在 Safari 和 Chrome 中有效(显示 undefined)。
上面的代码是在全局范围内编写的。在所有功能之外。
有什么原因吗?
【问题讨论】:
-
我很害怕,很困惑,也有点好奇……你想帮什么忙?
-
@Hahsen,我只是想了解各种可用的浏览器和 javascript 陷阱。这是变量提升,我试图理解它在全局范围内的行为以及返回语句。虽然不在函数定义中时不允许返回,但代码仍然可以在 chrome 和 safari 中运行。我正在尝试找出原因
-
把它理解为变量和声明预处理可能更容易理解。声明不会移动(或“提升到顶部”),它们会在执行任何代码之前进行处理。阅读 ECMA—262 §10.3 了解进入执行上下文时会发生什么,这很容易理解。
标签: javascript hoisting