立即执行函数
也叫做匿名函数自调用,可以在定义一段函数之后直接让其执行。
;(function () {
//匿名函数自调用
var a = "hello"
console.log(a)
})()
//会直接打印hello
立即执行函数可以对外部隐藏代码的实现,还可以将变量私有化,不会对外部变量造成影响。
书写立即执行函数时注意如果你没有在代码后加分号的习惯那么建议在函数之前加上分号,否则如果前面是一个函数会表示函数调用。
function test () {
console.log("bbb")
}
var a = test
//这里如果没有分号会认为是
//var a = test(function () { console.log("aaa") })() 程序会报错
(function () {
//匿名函数自调用
console.log("aaa")
})()
立即执行函数由于可以使得数据私有化,所以其最主要运用场景就是js的模块化。
首先简单介绍一下模块化
由于现在项目功能越来越多,代码量便也会越来越多,后期的维护难度会增大,此时在JS方面就会考虑使用模块化规范去管理。
什么是模块?
- 将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起
- 块的内部数据/实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信
我们分别采用对象和立即执行函数的方式来模拟以上两个过程,
我们定义module1.js和module2.js两个文件
//module1.js通过对象定义一个模块
let obj = {
msg: 'module1',
foo(){
console.log(this.msg)
}
}
在使用时:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>02_namespace模