What is the significance of, and reason for, wrapping the entire content of a JavaScript source file in a function block?
本问题已经有最佳答案,请猛点这里访问。
将JavaScript源文件的整个内容包装在功能块中有什么意义?
通常的做法是将浏览器JavaScript包装在IIFE中,以便将变量保持为私有而不会污染全局范围。
全局变量通常被认为是坏的。 他们鼓励容易出错的模式,并且更难以推理您的程序。
Node.js有一个漂亮的技巧,它实际上代表你自动将你的模块包装在一个函数中。 因此,您几乎不会看到任何人将他们的Node.js代码包装在IIFE中。 虽然您可能仍然看到它使用内联来限定一小部分代码。
由于ES6和块作用域,我们实际上可以通过使用块语句来避免IIFE的轻微开销。
1 2 3 4 5 6 | { const foo = 1; // ... code that you would put in an IIFE ... // ... but do NOT use `var` ... } console.log(foo); // ReferenceError: foo is not defined |
进一步阅读: