自我执行的匿名函数是如何工作的

在理解自我执行函数之前我们先理解一下函数声明函数,函数表达式,匿名函数他们之间的区别


运用function  fname(){.......}    //使用function关键字,然后指定函数名,这叫做函数声明。

var fnname=function (){....}    //使用function关键字,但是没有指定函数名,而是将他赋给变量,这件函数表达式。

function(){......}   //使用关键字function,但是没有指定函数名,这就叫做匿名函数,匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序。


函数声明和函数表达式的区别在于
---一 函数声明,在当前代码执行的执行环境(作用域)内的函数声明会有一个函数声明提升(function declaration hositing)而函数表达式必须等到代码执行到函数表达式所在的行的时候一行一行的执行

---另一个区别就是如果想调用函数声明的函数----函数名+(),而函数表达式后面直接加()就会立马调用

x(5);//5声明函数会提前
function x(num){alert num}
x(5);//x is not a function函数表达式没声明提前
var x=functoin(num){alert num}
var x=function(num){alert num}
x(5);//5
var x=function(num){alert num}(5);//立即执行
function x(num){alert num}(5);//无法执行,但不会抛出错误,会忽略后面括号
function (){alert num}();//语法错误,匿名函数虽然属于函数表达式,但没有赋值操作
//javascript解析会把function当做函数声明,要求一个函数名

理解以上概念以后,我们为你再来看看两种自定执行函数(function (){})()和(function(){})

我们发现只要是函数表达式后面加括号这个函数都会立即执行,但是函数声明后面加括号却不行,对于匿名函数后面加上()以后会爆出语法错误,引擎会误认为是函数声明但缺少函数名,那么我们加上某些运算符来告诉引擎它不是函数声明即可
+function(num){alert (num)}(5);//5
(function(num){alert (num)})(5);//5
(function(num){alert (num)}(5));//5








  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值