可变提升,

可变提升,

alert(myVar1);return false;var myVar1;

以上代码在IE、FF和Opera中抛出错误,声明返回语句必须在函数中出现。但它起作用了undefined)在Safari和Chrome。

以上代码是在全局范围内编写的。在所有功能之外。

有什么原因吗?



开心每一天1111
浏览 333回答 3
3回答

小怪兽爱吃肉

ECMA-262版第3版第12.9节(第75页)规定:如果ECMAScript程序包含return语句,该语句不在功能体.就是,return函数的外部是语法错误..如果语法错误发生时,不运行任何代码。想一想你的例子,就好像你已经写了:alert(myVar1);return false;syntax error))))))))))))))))));此外,第16节(第157页)规定:实现可以将下列类型的运行时错误的任何实例视为语法错误,因此可以提前报告:不正确地使用返回、中断和继续。火狐的引擎ET。艾尔。(即那些允许return在全球范围内)可以,可能符合,假设以下子句(在同一节中)允许实现return在全球范围内:执行应按规定报告所有错误,但下列情况除外:实现可以提供超出本规范描述的其他类型、值、对象、属性和函数。这可能导致构造(例如在全局范围中查找变量)具有实现定义的行为,而不是抛出错误(如参考错误).
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript