首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据标准,哪种JS函数声明语法是正确的?

根据标准,哪种JS函数声明语法是正确的?
EN

Stack Overflow用户
提问于 2011-04-23 01:16:35
回答 2查看 2.4K关注 0票数 15
  var foo = function(){ return 1; };
  if (true) {
    function foo(){ return 2; }
  }
  foo(); // 1 in Chrome // 2 in FF
  //I just want to be sure, is FF 4 not "standard" in this case?

编辑:

如果我们有这样的结果:

  var foo = function(){ return 1; };
  if (true) function foo(){ return 2; }      
  foo(); // is 1 standard or is 2 standard?
EN

回答 2

Stack Overflow用户

发布于 2011-04-23 02:01:22

问题中的代码实际上根本不被当前的ECMAScript语法所允许(从ECMAScript 5开始)。您可以在块内执行var foo = function() {},但只能在函数或脚本的顶层执行function foo() {}

目前,浏览器以不兼容的方式支持问题中的代码,因为它们都实现了对核心语言的扩展,并且它们实现了不同的扩展。在编译此脚本时,完全符合ECMAScript 5的实现实际上将以SyntaxError结束。

有人提议在ECMAScript中添加这类功能,但它们还没有完全敲定。

票数 16
EN

Stack Overflow用户

发布于 2011-04-23 02:03:06

对于没有在程序顶层或函数体顶层找到的函数声明,没有指定的行为。或者,指定的行为是一个语法错误,因为JavaScript语法不允许这样的函数声明。不同行为的原因是浏览器在历史上一直在这里的地图上,它们仍然如此,因为现有的网站使用浏览器特定的代码路径编写,使得任何人都不可能更改。

无论其价值如何,ECMAScript的未来版本很可能会定义它。但现在你不应该使用它,因为它的行为并不是由规范精确定义的,而且你会在不同的浏览器中得到不同的行为。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5758042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档