javascript - 语句评估顺序

标签 javascript

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

最佳答案

要否定某些x,您需要知道这个x 是什么。您不能否定表达式,只能否定该表达式的结果。

换句话说:你不能说“给我‘将 x 设为 y 的值’的负数”!(x = y)(好吧,你可以 用 JS 写这个,但这是不同的表达方式),但你可以说“给我 'dos x equal y' 的结果的负数吗?'” !(x == y) .

同样的事情发生在方法上。因为你调用它(使用括号),所以它必须首先检查结果,然后才能否定它

编辑:

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

当你编写 var test = function(){return 'hello';}() 时,你现在告诉 JS 立即调用该函数,并且该函数的结果应该是值测试。运行它将使 test 具有值 'hello'

关于javascript - 语句评估顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42773335/

相关文章:

javascript - 如何将上传的 excel 文件从 javascript 发送到 MVC 4 中的 Controller

javascript - dropbox.js 验证 Firefox 操作系统

javascript - Three.js:将 RawShaderMaterial 与 LineSegments 一起使用

javascript - Jquery 选择器做 text() 但没有类或 id?

javascript - 如何在 Javascript/jQuery 中为节点分配连续值?

javascript - Angular rxjs : Delay subscription till other Observable emits

javascript - 我的变量不能保存 "document.querySelector(".content") ",它返回 null

javascript - 传单叠加顺序(点、线和多边形)

javascript - 如何从javascript中的日期输入调用日期选择器?

javascript - 要再次显示该网页,Internet Explorer 需要重新发送