命令行JavaScript偶尔不会打印值

虽然我写javascript,我不确定其行为,我喜欢通过节点的REPLshell运行它,以validation它的工作原理。

当我testing一个缩小的封闭函数时,我注意到了一些奇怪的行为: 偶尔它不会输出任何值

没有输出

它不会“可靠地”发生,但是当我尝试使用2个不同的expression式时,我发现我可以最经常地发生它。

问: 为什么发生这种情况? 这是我以前从未遇到过的常见事件吗?

以下是我在示例中使用的代码段:

var testObj = { val1: false, val2: false }; !function(){for(var a in testObj)if(testObj.hasOwnProperty(a)&&!a)return!0}(); (function(){for(var a in testObj){if(testObj.hasOwnProperty(a)&&!a)return !0;}return !1;})(); 

笔记:

  1. 我已经看到这两个函数产生这个错误。
  2. 我已经看到这两个函数在第一次评估之前做了这些,然后我在两者之间交替。
  3. 我还没有用其他函数testing过这个function:只有通过对象属性search的东西。
  4. 我对函数的function并不感兴趣,除非是什么导致节点“错过”输出

节点v6.10.0 Windows 10 x64