报表评估订单

时间:2017-03-13 21:01:35

标签: javascript

我在一次在线测试中遇到了!function() {}();声明。通过将其更改为!function() { return true; }();,我发现该函数在!之前调用。我假设一个匿名函数声明首先变成一个函数表达式,然后它调用,最后结果在逻辑上被否定。我的假设是正确的,为什么声明按此顺序进行评估?

1 个答案:

答案 0 :(得分:1)

要取消某些x,您需要知道x是什么。你不能否定表达,只能否定表达的结果。

换句话说:你不能说"给我负面的设定x为y'"的价值。 !(x = y)(好吧,你可以在JS中写这个,但这是一个不同的表达方式),但你可以说"给我负面的&#结果39; x是否等于y?'" !(x == y)

方法也是如此。因为你称它(使用括号),它必须首先检查结果,然后才能否定它

修改

因为这似乎让人感到困惑:使用括号告诉JavaScript在函数定义之后调用该函数。试试这个: var test = function(){return 'hello';} test现在将是函数本身,并且运行test()将返回hello(a.k.a括号使JS调用函数)

当您编写var test = function(){return 'hello';}()时,您现在告诉JS立即调用该函数,并且该函数产生的任何内容都应该是test的值。运行此操作会使test具有值'hello'