繁体   English   中英

异常的node.js行为

[英]Unusual node.js behavior

今天,我看到了这段代码,该代码在node.js环境中运行。 (> node.exe test.js)

var param = (typeof module !== "undefined" && module.exports) || {};

(function(exports){

   console.log(exports === module.exports);

})(param);

并且此日志返回true。

有人可以向我解释这种行为吗?

提前致谢。

如果module没有未定义(它不是因为它是默认的对象),并module.exports是truthy的事情(这是默认设置),然后exports被分配到param并传递给函数。

exports然后比较module.exports ,和他们是一样的,因为module.exports是对象从在第一时间就来了。

exports将与module.exports如果它在其他地方运行(例如,在浏览器中获取window而不是module ),因为{}会被分配给param 。)


更新关于该问题的评论:

嗯,也许是错误的,但是我认为(((typeof module ..)|| {})将返回true,但不会返回“ exports”对象

否。 &&将(从左到右工作)评估为它测试的第一个虚假事物,或者(如果一切都是真实的)评估为它测试的最后一个真实事物。

typeof module !== "undefined"为true,因此它测试module.exports ,也为true,因此它返回module.exports

||返回它测试的第一个真实或最后一个虚假的东西,因此它随后返回module.exports

var d = (a && b) || c

如果a为真,则d求值为b 如果a为假,则d求值为c

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM