开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第28天,点击查看活动详情
add(1, 2);
function add(a, b) {
console.log(a + b)
}
// 这个函数只执行一次,手动执行,没有释放
我们的目的 -> 自动执行,执行完成以后立即释放
立即执行函数 -> 初始化函数,声明一个函数,并马上调用这个匿名函数就叫做立即执行函数;也可以说立即执行函数是一种语法,让你的函数在定义以后立即执行;
两种语法
(function() {
})();
(function () {
}());//w3c建议
立即函数的注意事项
(function test() {
var a = 1;
b = 2;
console.log(a + b)
}());
test写他和不写他,最后的结果是一样的,我们找test的时候是找不到的
立即函数可以传参数
(function(j,形参){
//代码中可以使用j
})(实参)
//如果立即执行函数中需要全局变量,全局变量会被作为一个参数传递给立即执行函数(上例中的i就是一个全局变量,i代表的是实参,j是i在立即执行函数中的形参
像其他函数一样,立即执行函数也可以有返回值。除了可以返回基本类型值以外,立即执行函数也能返回任何类型的值,比如对象,函数。
//定义一个num,接受立即函数的返回值
var num = (function (a, b) {
return a + b
}(2, 4));
函数声明变成表达式的方法 + - ! || &&
! function test() {
console.log(1)
}();
//像 || 或者 && 前面需要加一些东西
0 || function test() {
console.log(1)
}();
undefined || function test() {
console.log(1)
}();
1 && function test() {
console.log(1)
}();
立即函数的作用
- 不必为函数命名,避免了污染全局变量
- 立即执行函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量
- 立即执行函数会形成一个单独的作用域,我们可以封装一些临时变量或者局部变量,避免污染全局变量