首页 > 解决方案 > 为什么人们会这样写js?

问题描述

  var type = (0, _reactIs.isMemo)(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type; 

(0, _reactIs.isMemo)真的让我很困惑。这个东西的意思是什么?

ps:我知道(0, _reactIs.isMemo)这个表达式的值是_reactIs.isMemo

标签: javascript

解决方案


那里的逗号运算符确保括号内的内容被评估为没有调用上下文的表达式。

举一个更简短的例子,如果代码是:

var type = obj.fn(someArg); 

thenfn将使用 . 的调用上下文调用obj。但是原始的未编译代码,不管它是什么,都没有这样的调用上下文,所以为了忠实于原始代码,必须删除调用上下文,这可以通过逗号操作符来完成:

var type = (0, obj.fn)(someArg);

做同样事情的另一种方法是:

var fn = obj.fn;
var type = fn(someArg); 

(但这需要更多字符,所以缩小器更喜欢逗号运算符版本)

这是一个看起来很傻的缩小技巧,在导入的模块中很常见。通常,您只会查看代码,而不会有这种愚蠢的。


推荐阅读