【问题标题】:Why do people write js like this? [duplicate]为什么人们会这样写js?[重复]
【发布时间】:2020-09-15 02:50:06
【问题描述】:
  var type = (0, _reactIs.isMemo)(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type; 

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

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

【问题讨论】:

标签: javascript


【解决方案1】:

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

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

var type = obj.fn(someArg); 

然后fn 将使用obj 的调用上下文调用。但是原来的untranspiled代码,不管它是什么,都没有这样的调用上下文,所以为了忠实于原始代码,调用上下文必须被删除,这可以通过逗号运算符:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2019-05-20
    相关资源
    最近更新 更多