括号如何改变功能评估?

时间:2014-08-28 19:37:47

标签: javascript

我一直认为括号主要是一种组织代码的方法,并确保操作顺序顺序正确。但是,我最近遇到了一些代码,让我想知道他们是否会在幕后做其他事情。

我假设在这个代码块中包含函数定义的括号是为了便于阅读:

(function foo(){alert('hello world!')})();

但是,如果删除它们,我会收到错误。

function foo(){alert('hello world!')}(); //SyntaxError: Unexpected token )

这种情况很有意义,因为我可以想象函数末尾的}结束语句而()被调用独立于函数(抛出相同的错误),而将函数包装在括号中会返回该函数,然后可以调用该函数。

但是,以下代码有效:

(function foo(){alert('hello world!')}())

这与第二个代码块相同,除了整个事物都用括号括起来。我不知道为什么它没有像function foo(){alert('hello world!')}()那样抛出同样的错误,并且希望有人可以对这个问题有所了解。

0 个答案:

没有答案