JS 自执行函数

  由于自己js基础知识薄弱,很多js的知识还没有掌握,所以接下来会经常写一些关于js基础知识的博客,也算给自己提个醒吧。

  js自执行函数,听到这个名字,首先会联想到函数。接下来,我来定义一个函数:

function aaa(a,b){
    return sum = a + b
}

  定义了一个名为aaa的函数,在里面可以计算两个数的和。如果想执行它,就必须得调用它,并且还得给它传参:

var aa = aaa(1,2)

  这样就实现了一个函数的定义与调用,通过console.log我们可以看到sum实现了两个数的相加。

  自执行函数是什么?自执行函数就是当它被定义出来,就会自动执行的函数。不需要调用,传参也很方便。就上面的函数,用自执行函数定义就是这样:

(function aaa(a,b){
    return sum = a + b
;})(1,2)

  通过控制台可以发现sum实现了两个数的相加。

  自执行函数有三种写法:

  1.   ( function ( “ 参数 ” ) { " 函数方法 " ; } ) ( “ 给参数传的值 ” )
  2.   ( function ( " 参数 " ) { “ 函数方法 ” ; } ( " 给参数传的值 " ) )
  3. ! function ( " 参数 " ) { " 函数方法 " ; } ( " 给参数传的值 " ) 

  第三种!可以换作其他运算符或者void。

  自执行函数是很自私的,它的内部可以访问全局变量。但是除了自执行函数自身内部,是无法访问它的。例:

function aaa(a1,b1){
    return sum1 = a1 + b1
},
(function bbb(a2,b2){
    return sum2 = a2 + b2
;}(),
console.log(aaa)
console.log(bbb)

  这是一个函数与一个自执行函数,输出这两个函数会发现:函数aaa被全部打印出来,而bbb则报错。自执行函数相当于一个瓶口朝下的杯子,当定义它的时候,它会倾斜,把杯口露出来,吸收外面的新鲜空气;当它执行完毕,杯口不再外露,紧闭起来,与外界再无关联。

原文地址:https://www.cnblogs.com/btlbk/p/11111025.html

时间: 2024-10-29 03:11:18

JS 自执行函数的相关文章

js立即执行函数的使用

一.JS立即执行函数的写法 方式1.最前最后加括号 (function(){alert(1);}()); 方式2.function外面加括号 (function(){alert(1);})(); 方式3.function前面加运算符,常见的是!与void !function(){alert(1);}();  void function(){alert(2);}(); 二.立即执行函数的参数 可以给立即执行函数传递参数,例如 (function(who, when){     console.lo

js立即执行函数应用--事件绑定

js中立即执行函数的应用:应用到事件绑定上. 少说多做,直接运行代码(代码中有注释): 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta http-equiv="X-UA-Compatible" content="ie=edge" /> 6 <titl

js如何执行函数

前言 js如何执行函数,指的是声明一个函数之后,在代码里如何去执行它. 函数调用模式 步骤如下, 1.先声明一个函数: 2.然后,调用该函数即可. 方法调用模式 步骤如下, 1.先声明一个函数,只不过这个时候是作为对象的一个方法: 2.然后,调用对象的该方法即可. 总结 不管是哪种执行方式,根本都是先声明一个函数,然后再调用它即可--只不过声明函数的方式有所区别而已. 参考 JS执行函数 JS执行函数: 1:方法调用模式. 请注意this此时指向myobject. /*方法调用模式*/ var

js立即执行函数用法

js立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行. 一.JS立即执行函数的写法 方式1.最前最后加括号 (function(){alert(1);}()); 方式2.function外面加括号 (function(){alert(1);})(); 方式3.function前面加运算符,常见的是!与void !function(){alert(1);}(); void

js立即执行函数

js没有私有作用域的概念,避免命名冲突,引入了“匿名包裹器”或者“命名空间”的写法,即用匿名函数作为一个容器 js引擎在执行js代码时会“函数声明提升”,而函数表达式会从上至下逐行执行, js的函数和变量都会提升到函数的最顶部,即可以先使用再声明 //在function前面使用(),!,+,-,= 可以将函数声明转换成函数表达式,消除了js引擎对函数声明和函数表达式的歧义 (function(a){ console.log(a); })(123); (function(a){ console.l

js延迟执行函数

在js中,延迟执行函数有两种:setTimeout和setInterval setTimeout("test()","2000"); //2000毫秒后执行test()函数,只执行一次. setInterval("test()","2000"); //每隔2000毫秒执行一次test()函数,执行无数次. var interval = window.setInterval("test()","20

js自执行函数、调用递归函数、圆括号运算符、函数声明的提升

前言 起因是我要在jquery的ajax中需要根据返回值来决定是否继续发起ajax请求,这是一个有条件的循环,符合条件就跳出.可以使用while循环的,但是想了想还是递归调用好用. 调用递归函数 递归函数大概就是这样的.不符合条件重新执行这个函数 function f() { // do something if(1){ } else{ f(); } } 圆括号运算符和自执行函数 js中圆括号运算符指 (),一般有两个作用. 1.在函数后面表示立即执行这个函数,如 f() 2.计算表达式,如 /

js自执行函数

5.1对于函数表达式,在后面加括号即可以让函数立即执行:例如下面这个函数,至于为什么加了括号就可以立即执行,我们可以这么理解,就是像fn1():这样写的话,函数 可以立即执行是没问题的,我们在经常会用到,那么对于函数表达式来说,fn1就是对后面的匿名函数的一个引用,因此在后面的匿名函数后直接加括号,自然也就可以立即执行 函数表达式立即执行 5.2但是对于下面这个函数,如果直接加()就会报错:如果按照上面的思路去理解,在匿名函数后面直接加上()应该是可以立即执行的,但是下面这个函数之所以会报错,而

js 立即执行函数

1.我们首先要搞明白:函数表达式和函数声明的区别. 函数表达式:既可以为匿名函数也可以有函数名,但是调用的时候都是通过函数左边的变量func来调用 var func = function(){ alert('xxx'); }; var b = new func(); 函数声明:必须有函数名 function func(){ alert('xxx'); } func(); 所以立即执行调用的函数表达式有一下几种 !function () { /* code */ } ();~function ()