js之立即执行函数

首先我们知道,函数定义有两种常见的方式,函数声明和函数表达式。

// 函数声明
function fun() {
	console.log(123);
}

// 函数表达式
var f = function() {
	console.log(456);
}

函数声明可以进行函数提升,函数表达式不可以。

接下来说一下立即调用的事。看以下代码:

// 代码一:
function fun() {
	console.log(123);
}
fun();

// 代码二:
var a = function() {
	console.log(123);
}();

// 代码三:
function fun() {
	console.log(123);
}()

分别打印出:

// 123
// 123
// Uncaught SyntaxError: Unexpected token ‘)’

结果:代码三报错了

分析: 函数在定义的时候是不会执行的,我们要手动去调用执行,用函数表达式 + ()的方法去执行。

  • 代码一中 fun的函数名在这里就是函数表达式,所以 函数表达式 + () 就是fun()。
  • 代码二中 var a = function() { console.log(123); }是一个函数表达式,所以后面可以直接跟()去调用执行函数。
  • 代码三中 function fun() { console.log(123); }是函数声明,并不是函数表达式,所以后面不能直接跟() 调用

再接着看这段代码:

(function fun() {
	console.log(123);
})()

结果: // 123

分析:在js中,把函数声明转化为函数表达式的方法可以为,函数声明前面加上 +,-,~ 或 ! 等运算符或者 () 包起来。所以,(function fun() { console.log(123); })返回的就是函数表达式,而不是函数声明,所以后面可以跟 () 进行调用执行。

(function fun() {
	console.log(123);
})()

+function fun() {
	console.log(123);
}()

-function fun() {
	console.log(123);
}()

~function fun() {
	console.log(123);
}()

!function fun() {
	console.log(123);
}()

结果: 全部输出 123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值