为什么人们要这样写js?

web*_*ber 3 javascript

  var type = (0, _reactIs.isMemo)(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type; 
Run Code Online (Sandbox Code Playgroud)

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

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

Cer*_*nce 10

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

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

var type = obj.fn(someArg); 
Run Code Online (Sandbox Code Playgroud)

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

var type = (0, obj.fn)(someArg);
Run Code Online (Sandbox Code Playgroud)

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

var fn = obj.fn;
var type = fn(someArg); 
Run Code Online (Sandbox Code Playgroud)

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

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