JS 匿名函数 自执行

其实就是将函数直接做为表达调用,使用括号包裹定义函数体,解析器将会以函数表达式的方式去调用定义函数。

  • 常见格式:(function() { /* code */ })();
  • 解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内为匿名函数的参数。
  • 作用:可以用它创建命名空间,只要把自己所有的代码都写在这个特殊的函数包装内,那么外部就不能访问,除非你允许(变量前加上window,这样该函数或变量就成为全局)。各JavaScript库的代码也基本是这种组织形式。

总结一下,执行函数的作用主要为 匿名自动执行,代码在被解释时就已经在运行了。

其他写法

(function () { /* code */ } ());
!function () { /* code */ } ();
~function () { /* code */ } ();
-function () { /* code */ } ();
+function () { /* code */ } ();
时间: 2024-11-08 16:19:50

JS 匿名函数 自执行的相关文章

js匿名函数确实是个好东西

<body > <script type="text/javascript"> void function() { alert('弹出框'); }(); </script> </body> <body > <script type="text/javascript"> void function() { alert('弹出框'); }(); </script> </body&g

jQuery源码,匿名函数自执行

jQuery框架的首尾是这样写的()(), 1 (function(window){//这个window是个入参,随便起个名字都行 2 //这里面全都是js代码 3 })(window)//这个括号里的window不能变 实际上上面代码中后面的那个window是传入的js中的window对象,前面是也是变量名,只不过也叫window罢了.这种()()方式叫做匿名函数自执行. 上面的代码完全可以写成下面这样: 1 (function(w){ 2 //这里面全都是js代码 3 w.$=w.jQuer

js匿名函数闭包

函数声明: function functionName(arg0,arg1){ //函数体 } 函数表达式: var functionName = function(arg0,arg1){ //函数体 } 函数声明和函数表达式之间的主要区别是前者会在代码执行前被加载到作用域中,而后者是在代码执行到那一行的时候才会有定义.另一个区别是函数声明会给函数指定一个名字,而函数表达式则创建一个匿名函数,然后将这个函数赋给一个变量 1 递归 递归函数是在一个函数通过名字调用自身的情况下构成的,例如: fun

匿名函数自执行原理和instanceof运算符执行原理

今天收到RSS订阅中有一篇<Javascript – Arraylike的7种实现>,看第一种实现方式是,瞬间被!function(){}()这种匿名函数自执行方式给亮瞎了眼睛.这种写法绝对是装逼神器,代码如下: 1 !function () { 2 //通过闭包实现 3 var List = function () { 4 var list = [], 5 self = { 6 constructor: List, 7 //如果希望更像原生一点,将length定义为属性,那么length则需

js匿名函数及闭包(javaScript高级程序设计第3版)

一.匿名函数 //普通函数 function box() { //函数名是box return 'Lee'; } //匿名函数 function () { //匿名函数,会报错 return 'Lee'; } //通过表达式自我执行 (function box() { //封装成表达式 alert('Lee'); })(); //()表示执行函数,并且传参 //把匿名函数赋值给变量 var box = function () { //将匿名函数赋给变量 return 'Lee'; }; aler

JS匿名函数声明,调用;JS闭包详解(转载)

js匿名函数的代码如下:(function(){ // 这里忽略jQuery 所有实现 })(); 半年前初次接触jQuery 的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的第一眼,我就迷糊了.为什么只有一个匿名函数又没看到运行(当然是运行了…… ),就能有jQuery 这么个函数库了?于是,我抱着疑问来到CSDN .结果相信现在很多人都很清楚了(因为在我之 后也不乏来者,呵呵~ ).当一个匿名函数被括起来,然后再在后面加一个括号,这个匿名函数就能立即运行起来!真神奇哦

js匿名函数封装

js匿名函数封装 (function(root,factory){ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (root.Demo = factory()); })(this,function(){ funct

[沫沫金]JS匿名函数this调用变量报错

背景 今天使用Dcloud扫码功能,success成功方法设置data中的scanContext变量,报"undefined"! 思路 一.怀疑是扫码内容不是JSON对象,无法点属性报错.排除,使用JSON.parse转换成功后,依然报"undefined".二.怎么就"undefined"呢,百思不得其解.继续想办法 解决 突然,看到附件选择的方法,人家是设置的this.fileUrl成功的.比对下,什么区别.发现定义的匿名方法,写法不同.我的

js中的匿名函数自执行

随笔,java中因为有修饰符的存在,那就有private类的存在,js不一样,没有修饰词一说,因此为了防止全局变量的污染,js中就出现了匿名函数,直接上code,看到的人可以自己体会: (function () { console.log("aaa");})();(function (a) { console.log(a);})("aaa"); 上面是2种写法,作用是完全相同的,不过有时候需要把全局的参数带进去的时候就可以直接采用带参的写法,这样写的另一个目的是函数