当我们想要立即调用一个函数时,就需要用到JavaScript立即执行函数。立即执行函数是一个函数执行完毕后立即被调用执行,而不是等到再次调用。它常用于模块化开发,而这个函数中的变量不会污染全局变量。
下面来讲解三种不同写法:
(function() {
// 函数体
})();
这是最常见的一种写法,把函数用圆括号括起来,这个圆括号是把函数表达式变成了函数调用表达式,然后再使用另外一个圆括号把整个表达式括起来进行调用。
这种写法也是非常常用的模式,圆括号会让浏览器把表达式解析完毕之后再去执行。这样会避免一些因误解产生的错误。
示例:
(function () {
var name = "Jack";
console.log(name); // "Jack"
})();
console.log(name); // ReferenceError: name is not defined
在上面的例子中,我们创建了一个立即执行函数并给它命名,然后立即调用它。该函数中的变量name
只能在该函数中使用,不能在外部访问。
函数表达式的写法与写法一很相似,只是不加圆括号直接使用函数表达式代替函数进行调用。
let func = function() {
// 函数体
}();
示例:
let func = function () {
var name = "Jack";
console.log(name);
}();
console.log(name); // ReferenceError: name is not defined
可以看到,这两种写法实现效果一样,只是使用方式不同,可以按个人喜好进行选择。
使用自执行函数需要首先定义一个匿名函数,然后在声明后面紧跟两个圆括号()
,最后加上一个括号把整个表达式括起来调用。
!function(){
// 函数体
}();
示例:
!function () {
var name = "Jack";
console.log(name);
}();
console.log(name); // ReferenceError: name is not defined
在上面的代码中,我们使用了一个自执行函数,这个函数中的变量name
只能在该函数中使用,外部不能访问。自执行函数的这种写法常用于前端开发中的代码压缩与混淆。
综上所述,以上三种立即执行函数的写法都是可以实现同样的效果,写法一和写法二较为常用,而写法三适用于一些特殊场景。
本文链接:http://task.lmcjl.com/news/9900.html