gpt4 book ai didi

javascript - 在nodejs模块中自执行函数被认为是一个好的实践吗?

转载 作者:行者123 更新时间:2023-12-01 01:51:42 24 4
gpt4 key购买 nike

我知道,拥有自执行函数是浏览器中 JavaScript 的一个很好的实践,可以避免变量作用域问题。

但是,我想知道,nodejs模块中是否还需要自执行功能?或者,它不再服务于变量作用域的目的?

例如

screenshot.js(不带自执行功能)

const puppeteer = require('puppeteer');
module.exports = async (url, width, height, path) => {
...
return screenshot;
};

screenshot.js(具有自执行功能)

const puppeteer = require('puppeteer');
(function () {
module.exports = async (url, width, height, path) => {
...
return screenshot;
};
})();

最佳答案

您在第二个代码块中显示的常规自执行函数表达式在 Node.js 模块中没有任何作用,因为 Node.js 模块已经(由 Node.js)包装到它自己的函数中,因此它已经具有它有自己独特的功能范围。无需再次包装它来赋予它另一个独特的函数作用域。

您可以看到实际的node.js模块包装器here in the doc .

(function(exports, require, module, __filename, __dirname) {
// Module code actually lives in here
});

当您的模块运行并且您的模块代码被插入到此包装器中,然后将代码传递给 eval() 进行解析时,会执行此包装器函数。

关于javascript - 在nodejs模块中自执行函数被认为是一个好的实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51448475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com