为了实现一个发出 ECMAScript 的微型编译器,我需要知道函数对象表达式绑定的强度,即“运算符”的优先级是什么
function(a1, a2, ...) { ... }
?
例如,
function(a1, a2, ...) { ... } (b1, b2, ...)
应该如何解析?为了得到想要的结果,即将 b1, b2, ... 应用于函数对象,我必须在 Rhino 解释器中使用括号括住函数对象。
为了实现一个发出 ECMAScript 的微型编译器,我需要知道函数对象表达式绑定的强度,即“运算符”的优先级是什么
function(a1, a2, ...) { ... }
?
例如,
function(a1, a2, ...) { ... } (b1, b2, ...)
应该如何解析?为了得到想要的结果,即将 b1, b2, ... 应用于函数对象,我必须在 Rhino 解释器中使用括号括住函数对象。
你function(a1, a2, ...) { ... } (b1, b2, ...)
是无效的,应该返回一个语法错误。ECMAScript 具有 a 和 a 的FunctionDeclaration
概念FunctionExpression
。您可能需要查看以下内容:
虽然 aFunctionExpression
是一个运算符,但 theFunctionDeclaration
是一种用于声明函数的特殊语法,这些函数会自动提升到封闭范围的顶部。
function
在分组运算符(括号)中包装 a将强制解释器将其视为 a FunctionExpression
。
如果您在 Firebug 中尝试以下操作:
function () { alert('test'); }(); // Syntax Error
(function () { alert('test'); })(); // Works fine
要执行函数文字,需要将其括在括号中。任何一个:
(function(...){...})(...);
或者:
(function(...){...}(...));
没有括号会产生语法错误。