在读Webpack
源码中有出现 类似以下代码
(0, function)()
在 statckflow 上找到了同类的问题
import { a } from 'b';
function x () {
a()
}
经过 babel
编译后
'use strict';
var _b = require('b');
function x() {
(0, _b.a)();
}
我们认识的逗号操作符 对它的每个操作对象求值(从左至右),然后返回最后一个操作对象的值。
例如:
console.log((1, 2)); // Returns 2 in console
console.log((a = b = 3, c = 4)); // Returns 4 in console
那么这么写有什么用处呢?
一个回答者给出的例子
var a = {
foo: function() {
console.log(this === window);
}
};
a.foo(); // Returns 'false' in console
(0, a.foo)(); // Returns 'true' in console
(0, a.foo)
表达式从左到右进行执行,会返回最后一个操作的值,那么就等同于
function() {
console.log(this === window);
}
这时候 this
的是全局对象 window
, 所以打印结果为 true