javascript - ECMAScript 中函数对象表达式的优先级

标签 javascript ecma262

为了实现一个发出 ECMAScript 的小型编译器,我需要知道函数对象表达式绑定(bind)的强度,即“运算符”的优先级是什么 函数(a1, a2, ...) { ... }?

例如,如何 函数(a1, a2, ...) { ... } (b1, b2, ...) 应该被解析吗?为了获得想要的结果,即对函数对象应用 b1、b2、...,我必须在 Rhino 解释器中在函数对象周围使用括号。

最佳答案

您的 function(a1, a2, ...) { ... } (b1, b2, ...) 无效,应返回语法错误。 ECMAScript 具有 FunctionDeclarationFunctionExpression 的概念。您可能需要查看以下内容:

虽然FunctionExpression是一个运算符,但FunctionDeclaration是一种用于声明函数的特殊语法,它会自动提升到封闭范围的顶部。

函数包装在 grouping operator 中(括号)将强制解释器将其视为 FunctionExpression

如果您在 Firebug 中尝试以下操作:

function () { alert('test'); }();       // Syntax Error
(function () { alert('test'); })();     // Works fine

关于javascript - ECMAScript 中函数对象表达式的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845426/

相关文章:

javascript - html 代码插入 javascript 错误

javascript - Ecma-262 (EcmaScript 5) 将如何帮助您?

javascript - 为什么 JSON 只允许字符串作为键?

javascript - 如何通过动态 ecma/javascript 表达式生成 vxml 标签

javascript - ECMA-262 ReturnIfAbrupt

javascript - 为什么 JavaScript aws-sdk ssm getParameter 需要所有参数的权限,而不是我需要的那个?

javascript - 使用纵横比调整 div 大小以适应内容 css 图像

javascript - 使用cookie隐藏div的问题

javascript - 如何在特定时间对音频 blob 进行切片?

javascript - 在严格模式下获取未知环境中全局对象的引用