在讀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