为了账号安全,请及时绑定邮箱和手机立即绑定

可变提升,

可变提升,

开心每一天1111 2019-08-03 03:03:11
可变提升,alert(myVar1);return false;var myVar1;以上代码在IE、FF和Opera中抛出错误,声明返回语句必须在函数中出现。但它起作用了undefined)在Safari和Chrome。以上代码是在全局范围内编写的。在所有功能之外。有什么原因吗?
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

ECMA-262版第3版第12.9节(第75页)规定:

如果ECMAScript程序包含return语句,该语句不在功能体.

就是,return函数的外部是语法错误..如果语法错误发生时,不运行任何代码。想一想你的例子,就好像你已经写了:

alert(myVar1);return false;syntax error))))))))))))))))));

此外,第16节(第157页)规定:

实现可以将下列类型的运行时错误的任何实例视为语法错误,因此可以提前报告:

  • 不正确地使用返回、中断和继续。

火狐的引擎ET。艾尔。(即那些允许return在全球范围内)可以,可能符合,假设以下子句(在同一节中)允许实现return在全球范围内:

执行应按规定报告所有错误,但下列情况除外:

  • 实现可以提供超出本规范描述的其他类型、值、对象、属性和函数。这可能导致构造(例如在全局范围中查找变量)具有实现定义的行为,而不是抛出错误(如

    参考错误).




查看完整回答
反对 回复 2019-08-04
  • 3 回答
  • 0 关注
  • 332 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信