JavaScript中(0, someFunction)语法模式的作用及原因解析
关于TypeScript编译后
(0, someFunction)(...)语法的疑问 我在查看TypeScript转译为JavaScript的代码时,反复遇到(0, someFunction)(...)这样的语法模式。例如一段TypeScript代码:
await formatFiles(tree);
被编译为以下JavaScript代码(取自我项目的node_modules目录):
await (0, _devkit.formatFiles)(tree);
注:这里新增的_devkit.应该是TypeScript的import被编译为CommonJS的require时处理生成的。
我的问题是:这种(0,开头的语法模式有什么作用?
我自己的理解是:逗号操作符会依次计算每个表达式,丢弃除最后一个以外的所有值,返回最后一个值。只有当前面的表达式有副作用时这种写法才有意义,但0这个表达式没有任何副作用,不会产生任何操作。在我看来,(0, _devkit.formatFiles)完全等同于_devkit.formatFiles。
但我认为TypeScript编译器的开发者都是专业人士,他们添加(0,必然有其原因,只是我没搞懂。
我是不是忽略了什么?这个0的作用是什么?它真的有实际功能吗?
内容的提问来源于stack exchange,提问作者Joe White
相关产品推荐
相关产品推荐

