[英]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.