關(guān)于js 中(0, function)() 的疑惑

在讀Webpack 源碼中有出現(xiàn) 類似以下代碼

(0, function)()

在 statckflow 上找到了同類的問題

statckflow

import { a } from 'b';

function x () {
  a()
}

經(jīng)過 babel 編譯后

'use strict';

var _b = require('b');

function x() {
  (0, _b.a)();
}

我們認(rèn)識的逗號操作符 對它的每個操作對象求值(從左至右),然后返回最后一個操作對象的值。

例如:

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) 表達式從左到右進行執(zhí)行,會返回最后一個操作的值,那么就等同于

function() {
  console.log(this === window);
}

這時候 this的是全局對象 window, 所以打印結(jié)果為 true

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容