含义:立即执行,且执行一次,执行后销毁的函数。
作用:创建一个局部作用域,避免变量污染全局作用域。
1、如何理解`(function(i){})(i)`?
`(function(i){})`表示定义了一个匿名函数,它接受一个参数`i`,然后函数体中没有任何操作。最后的`(i)`表示立即执行这个函数,并传入一个参数`i`。
2、如何使用立即执行函数?
首先js中的函数通常有两种命名方式,分别是声明式函数和函数表达式,如下所示。
// 声明式函数
function hello() {
}
// 函数表达式
const hello = function() {
}
当我们的有些简单函数只执行一次的时候,我们通常会这么做。
// 声明式函数
function hello1 (name) {
console.log('你好1', name);
}
hello1('龍')
// 函数表达式
const hello2 = function() {
console.log('你好2');
}
hello2()
// 箭头表达式
const hello3 = () => {
console.log('你好3');
}
hello3()
在这里,我们发现执行函数需要用到函数名,若我们不想定义这个函数名呢?那就需要用到立即执行函数了。
<script type="text/javascript">
!function (name) {
console.log('你好, ' + name + '!');
}('吕布');
~function (name) {
console.log('你好, ' + name + '!');
}('云缨');
+function (name) {
console.log('你好, ' + name + '!');
}('后羿');
-function (name) {
console.log('你好, ' + name + '!');
}('王昭君');
void function (name) {
console.log('你好, ' + name + '!');
}('亚瑟');
(function (name) {
console.log('你好, ' + name + '!');
}('钟馗'));
(function (name) {
console.log('你好, ' + name + '!');
})('澜');
(
(name) => {
console.log('Hello, ' + name + '!');
}
)('帅龍之龍')
</script>