<分区>
我注意到 babel转译
import { install } from 'source-map-support';
install();
进入
var _sourceMapSupport = require('source-map-support');
(0, _sourceMapSupport.install)();
为什么 babel在调用 install
函数时使用逗号运算符和 0
作为第一个表达式?
<分区>
我注意到 babel转译
import { install } from 'source-map-support';
install();
进入
var _sourceMapSupport = require('source-map-support');
(0, _sourceMapSupport.install)();
为什么 babel在调用 install
函数时使用逗号运算符和 0
作为第一个表达式?
最佳答案
逗号在What does a comma do in JavaScript expressions?中解释.基本上,它计算所有表达式,并返回最后一个返回的值。
可能,使用它的原因是能够调用该方法,就好像它不是方法一样。
考虑这个函数:
function f() { return this; }
让我们把它变成一个方法:
var o = {f: f}
然后,尽管 f === o.f
,但结果会因您如何调用而有所不同:
o.f(); // o
f(); // global object (in non-strict mode)
f(); // undefined (in strict mode)
因此 babel 使用逗号方法获取函数的引用,而不将其与对象相关联。这样就可以像调用全局函数一样调用该方法,而不是一个函数。
(0, o.f)(); // global object (in non-strict mode)
(0, o.f)(); // undefined (in strict mode)
关于javascript - 为什么 babel 用 (0, ...)() 包裹 _sourceMapSupport.install()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33224446/
相关文章:
javascript - 旧浏览器上的意外 token (非 ES6)
javascript - 如何将 babel 与我的常规 AngularJs 应用程序合并
javascript - 可以使用 jquery 更改 xml 的节点名称吗?
php - 使用 jQuery 从 HTML 页面重定向到 PHP 页面
javascript - EcmaScript 6 的非法构造函数
javascript - 具有租户特定包的 Multi-Tenancy JavaScript 应用程序
javascript - 异步函数: can I return before await was executed?