说道在写JavaScript代码的时候,我们经常有一些变量啊,方法呀,是整个代码程序只运用一次就没有作用的一部分代码。
而这些代码又不用不可,用完之后再也不用了而且还占内存,我们就想有没有一种什么方法可以让这个函数方法用完一次,
充分展示了它的作用之后,就立即销毁。在这里,我们引入立即执行函数。
立即执行函数
定义:立即执行函数只被执行一次,执行完之后立即销毁。
作用:针对一些初始化功能的函数。
方法:运用()执行符号进行。
执行符号定义立即执行函数有两种方式。
1.(function(){}())2.(function(){})() (现在W3C标准建议使用第一种。)
在这里,大家想在定义函数的时候,比如说我定义一个函数
function test(){
console.log("a");
} 我们在执行函数的时候通常都是:test(),进行执行。那我在上述函数后面直接加(),是不是也可以执行???
答案是不行的,在这里,这个括号是执行符号,记住一句话:函数只有表达式才能被执行符号执行。
这里上面的函数叫什么?是函数声明,你叫函数表达式。所以
var num = function test(){
console.log("a");
}() 这样是可以执行的。
被执行符号执行的表达式就会自动放弃函数的名称,也就是说:能被执行符号执行的表达式基本上成为立即执行函数。
这句话的意思是就以上述代码为例。上述表达式被执行符号执行,如果你再在控制台中找test函数 是找不到的
上面说只有函数表达式才能被函数执行,看这里
function test(a ,b,c,d){
console.log(a + b + c + d);
}(1,2,3,4); 这个函数在这里是不会报错的,但也不会执行。在JavaScript引擎机制中JS引擎会想方设法的不让你错,
于是上述代码就把函数和最后面的括号分开形成:
function test(a ,b,c,d){
console.log(a + b + c + d);
}
(1,2,3,4); 表现出不是一体的,也不会报错。
立即执行函数的函数特性
立即执行函数和函数一样,其实它本身就是函数,有函数的特性:可以传参,可以有返回值。
传参
立即执行函数的传参和基本函数有些不同。实在最后面的括号里面进行传实参。
(function(a,b){
console.log(a + b);
}(1,2));
返回值
返回值和基本函数相同,声明一个参数接着函数的返回值就可以。
var num = (function(a,b){
var c = a + b;
return c;
}(1,2));
JavaScript语言我个人感觉是最有意思的了,我也是一个初学者,遇到问题,喜欢在博客上分享,
也希望能帮到大家。
一个初学者,有什么不足或者纰漏的话,希望在下面评论出来,相互学习,共同进步。
--主页传送门--