javascript - 为什么人们会这样写js?
问题描述
var type = (0, _reactIs.isMemo)(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;
(0, _reactIs.isMemo)
真的让我很困惑。这个东西的意思是什么?
ps:我知道(0, _reactIs.isMemo)
这个表达式的值是_reactIs.isMemo
解决方案
那里的逗号运算符确保括号内的内容被评估为没有调用上下文的表达式。
举一个更简短的例子,如果代码是:
var type = obj.fn(someArg);
thenfn
将使用 . 的调用上下文调用obj
。但是原始的未编译代码,不管它是什么,都没有这样的调用上下文,所以为了忠实于原始代码,必须删除调用上下文,这可以通过逗号操作符来完成:
var type = (0, obj.fn)(someArg);
做同样事情的另一种方法是:
var fn = obj.fn;
var type = fn(someArg);
(但这需要更多字符,所以缩小器更喜欢逗号运算符版本)
这是一个看起来很傻的缩小技巧,在导入的模块中很常见。通常,您只会查看源代码,而不会有这种愚蠢的。
推荐阅读
- c# - 将数据库拆分为多个 dbContexts EF Core
- angular - 如何调试 Angular CLI 开发服务器
- python - 优化字符串中字符频率的计数器
- javascript - 如何使用 Json 文件填充输入字段?
- python - 有没有办法测量python中多维空间中两个分布之间的距离?
- r - 带引号的字符串中的 EOF...然后列多于列名
- python - RabbitMQ/Celery (eventlet):服务器意外关闭连接
- matplotlib - Matplotlib 绘图标签重叠
- android - 不可转换的类型;无法将“android.content.Context”转换为“com.example.xxxxx.PendingListFragment”
- youtube - 如何从 VidIQ 和 TubeBuddy 复制批量片尾复制功能?