在javascript中自执行函数的目的是什么?

在javascript中自执行函数的目的是什么?

在javascript中,你想什么时候使用它:

(function(){
    //Bunch of code...})();

对此:

//Bunch of code...


慕田峪7331174
浏览 2509回答 3
3回答

蝴蝶刀刀

简单化。看起来很正常,几乎让人感到安慰:var userName = "Sean";console.log(name());function name() {   return userName;}然而。如果我在页面中包含一个非常方便的javascript库,将高级字符转换为基本级别表示,该怎么办?等等......什么?我的意思是。如果有人输入带有某种重音的角色(例如法语或西班牙语),但我只想要'英语'字符?Az在我的节目中?嗯......西班牙语'n~'和法语'e /'字符(我已经为这些字符使用了两个字符,但你可以在表达重音的字符中进行精神跳跃),这些字符可以被翻译成为'n'和'e'的基本字符。所以有一个好人已经写了一个全面的字符转换器,我可以包括在我的网站...我包括它。一个问题:它有一个名为'name'的函数,与我的函数相同。这就是所谓的碰撞。我们在相同的范围内声明了两个具有相同名称的函数。我们想避免这种情况。所以我们需要以某种方式确定代码的范围。在javascript中扩展代码范围的唯一方法是将其包装在函数中:function main() {   // We are now in our own sound-proofed room and the    // character-converter libarary's name() function can exist at the    // same time as ours.    var userName = "Sean";   console.log(name());   function name() {     return userName;   }}这可能会解决我们的问题。现在所有东西都是封闭的,只能在我们的开启和关闭支架内进行访问。我们在函数中有一个函数......这看起来很奇怪,但完全合法。只有一个问题。我们的代码不起作用。我们的userName变量永远不会回显到控制台!我们可以通过在现有代码块之后添加对函数的调用来解决此问题...function main() {   // We are now in our own sound-proofed room and the    // character-converter libarary's name() function can exist at the    // same time as ours.    var userName = "Sean";   console.log(name());   function name() {     return userName;   }}main();或之前!main();function main() {   // We are now in our own sound-proofed room and the    // character-converter libarary's name() function can exist at the    // same time as ours.    var userName = "Sean";   console.log(name());   function name() {     return userName;   }}次要问题:“主要”这个名称还没有被使用的可能性有多大?......非常非常苗条。我们需要更多的范围。以及一些自动执行main()函数的方法。现在我们来到自动执行功能(或自动执行,自运行,等等)。((){})();语法像罪一样尴尬。但是,它的工作原理。当您将函数定义包装在括号中并包含参数列表(另一组或括号!)时,它将充当函数调用。所以让我们再看一下我们的代码,使用一些自动执行的语法:(function main() {   var userName = "Sean";     console.log(name());     function name() {       return userName;     }   })();因此,在您阅读的大多数教程中,您现在将使用“匿名自执行”或类似的术语进行轰炸。经过多年的专业开发,我强烈建议您为调试目的命名您编写的每个函数。当出现问题时(它会出现问题),您将在浏览器中检查回溯。它总是更容易缩小你的代码的问题时,在堆栈跟踪中的条目有名字!非常啰嗦,我希望它有所帮助!

鸿蒙传说

自调用(也称为自动调用)是函数在定义时立即执行的。这是一个核心模式,是许多其他JavaScript开发模式的基础。它是一个伟大的粉丝:)因为:它将代码保持在最低限度它强制将行为与表达分开它提供了一个阻止命名冲突的闭包极大 - (为什么你应该说它好?)它是关于一次定义和执行一个函数。您可以让该自执行函数返回一个值,并将该函数作为参数传递给另一个函数。封装很有用。它也适用于块范围。是的,您可以将所有.js文件包含在自执行功能中,并可以防止全局命名空间污染。;)更多这里。
打开App,查看更多内容
随时随地看视频慕课网APP