为什么我们在JS中添加'(')之前?
这个问题在这里已经有了答案:
尽量不要:
function() { return 1; }()
那么你将得到Uncaught SyntaxError: Unexpected token (
JavaScript解析器以两种模式运行,我们称它为表达模式和普通模式,在正常模式下,JS解析器需要顶层声明,如函数和代码块。 使用'('进入表达式模式,在表达式模式下function() { }
将被解释为常量,其值是一个函数。
对象文字也有类似的情况:
{ foo: 1 }
没有'('这意味着代码块,你有单一的表达式 - 当你使用({ foo: 1 })
解析器进入表达式模式并将其解释为带有属性foo
对象字面值时,常量1由标签继续。
为什么是两种模式,它是通过语言语法来实施的,这在JS的情况下非常复杂(就像大多数基于C的语言一样)。
链接地址: http://www.djcxy.com/p/94943.html