立即执行函数

立即执行函数

立即执行函数是它会自动执行,而不需要你额外的去调用。
我们先来看看函数声明、函数表达式和匿名函数的写法。

函数声明

//函数声明
function fn(){
	console.log('fn');
}
//函数调用
fn();

函数表达式

var f = function fn(){
	console.log('fn');
}
f();//函数调用

匿名函数

var f = function(){
	console.log('fn');
}
f();//函数调用

上面的例子我们都是要额外的调用函数才能让它执行,立即函数就是不需要我们额外的去调用它,它就可以自己运行。

立即执行函数常用写法

(function f(){.....})();//圆括号包住函数声明部分,后面再加一个括号,小的圆括号可以传参数
(function f(){.....}());//函数声明后加一个(),再用一个圆括号全部包住,小的圆括号可以传参数

立即执行函数它既可以是匿名函数也可以是命名函数。

function(){
	console.log('fn');
}();
//报错:
Uncaught SyntaxError: Function statements require a function name

原因:js引擎看到function关键字后,那么后面跟的是函数声明语句,不应该以圆括号结尾。 解决:让js引擎知道圆括号前面的部分不是函数定义语句,而是一个表达式,让它可以运算。

//圆括号包裹函数部分
(function(){
 console.log("f"); 
})();
//圆括号包裹整个
(function(){
 console.log("f"); 
}());
//结果都是输出:f

除了用圆括号包裹之外,还有很多让js引擎认为它是一个表达式的方法。

//"!"运算符
!function(){
 console.log("f"); 
}();
//"+"运算符
+function(){
 console.log("f"); 
}();
//"-"运算符
-function(){
 console.log("f"); 
}();
//"~"运算符
~function(){
 console.log("f"); 
}();
//new
new function(){
 console.log("f"); 
}();
//"="运算符
var f =function(){
 console.log("f"); 
}();

立即执行函数的好处:通过定义一个匿名函数,创建了一个新的函数作用域,相当于创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏污染全局的命名空间。此时若是想访问全局对象,将全局对象以参数形式传进去即可

(function(window){
    .....
})(window);

参考https://www.jb51.net/article/127527.htm

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值