【发布时间】:2016-09-12 09:39:25
【问题描述】:
我知道自我执行匿名。通常我们将它们创建为
(function(){ return 1;})()
原因 - 如果我们使用没有运行的解析器功能
function(){ return 1}()
但今天我发现下一个代码也可以(检查括号顺序)
(function(){ return 1;}())
function(){ return 1; }() 仍然给我 SyntaxError,因为它应该
请解释为什么? Thx 供参考以获取更多详细信息
附:问题是关于(function(){ return 1;}()) 变体!
【问题讨论】:
-
你没有关闭 (function(){ return 1; }() 中的括号
-
它是包含函数的文本 - 都是正确的
-
因为语法不正确。这:
function(){ return 1; }()根本没有被定义为有效的语法。 -
@VasiliyVanchuk 阅读:en.wikipedia.org/wiki/Immediately-invoked_function_expression
-
出于同样的原因
{a: 1, b: 2}[a]不起作用。这里,{…}是一个块,而不是一个对象。这是因为{被解释为语句,而不是表达式。({a: 1, b: 2})[a]或({a: 1, b: 2}[a])确实有效,因为(…)强制{…}被解释为表达式(对象)。函数也一样,因为有函数语句和函数表达式。为什么?因为这就是 JavaScript 的设计方式。
标签: javascript function self-executing-function