1.什么是IIFE
2.作用
- 隐藏实现某个功能
- 不会污染外部(全局)命名空间
- 可以用来编写js模块
例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>IIFE</title>
</head>
<body>
<script>
(function() { // 匿名函数自调用
var a = 3
console.log("这是函数里面的a:", a);
console.log("这是匿名函数自调用");
})()
var a = 4
console.log("这是全局里面的a:", a);
(function() {
var a = 1
function test() {
console.log("test函数里面的a:", a);
}
window.b = function() {
// 向外暴露一个全局函数
return {
test,
}
}
})()
b().test()
// 1.b是全局中的一个函数名
// 2.b执行后返回的是一个对象,可以通过“对象.属性”的方式获取对象中的属性(执行对象中的方法)
</script>
</body>
</html>