JS匿名执行函数

一、匿名函数的创建

第一种:(调用sum后可执行)

var sum=function(x,y){

return x+y;

}

第二种:(可自执行)

void function(x,y){

}(1,2);

自执行的匿名函数

1. 什么是自执行的匿名函数?
    它是指形如这样的函数: (function {// code})();
    2. 疑问
    为什么(function {// code})();可以被执行, 而function {// code}();却会报错?
    3. 分析
    (1). 首先, 要清楚两者的区别:
    (function {// code})是表达式, function {// code}是函数声明.
    (2). 其次, js"预编译"的特点:
    js在"预编译"阶段, 会解释函数声明, 但却会忽略表式.
    (3). 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错;
    当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一 个函数, 故而遇到();时, 便会被执行.

另外, 函数转换为表达式的方法并不一定要靠分组操作符(),我们还可以用void操作符,~操作符,!操作符……

如:

void function(x,y){
alert("fdf");
}(1,2);

!function(x,y){
alert("fdf");
}(1,2);

时间: 2024-10-04 14:31:37

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

js立即执行函数用法

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

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基础知识的博客,也算给自己提个醒吧. js自执行函数,听到这个名字,首先会联想到函数.接下来,我来定义一个函数: function aaa(a,b){ return sum = a + b } 定义了一个名为aaa的函数,在里面可以计算两个数的和.如果想执行它,就必须得调用它,并且还得给它传参: var aa = aaa(1,2) 这样就实现了一个函数的定义与调用,通过console.log我们可以看到sum实现了

js立即执行函数

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

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 ()

js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( ))

( function(){…} )() ( function (){…} () ) 是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此.要理解立即执行函数,需要先理解一些函数的基本概念. 函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnNam