每个js文件都封装一个IIFE可以吗?

Is it acceptable to encapsulate each js file with an IIFE?

每个js文件都封装一个IIFE可以吗?

例如,在文件 somefile.js 中而不是:

var x = ...
var y = ...
function foo() {...}
...

制作:

(function() {
var x = ...
var y = ...
function foo() {...}
...
}());

并对所有 js 文件执行相同的操作。这将对用户隐藏函数和全局变量,因此他们将无法轻松调用或更改它们。

Is it acceptable to encapsulate each js file with an IIFE?

是的,完全可以接受。

但是它可能不太有用,因为您通常希望 js 文件中的某些函数可以从其他地方调用。

This will hide the functions and global variables from the users so they won't be able to easily invoke or change them.

不,对用户隐藏任何东西都是徒劳的。

IIFEs的目的是为了相互隐藏文件的局部变量,即分离js模块。