12.立即执行函数
立即执行函数
- 在开发中应尽量减少直接在全局作用域中编写代码!
- 所以我们的代码要尽量编写在局部作用域中
- 如果let声明的变量,可以使用
{}
来创建块作用域
1. 在编写程序时同时也不能忽视var声明,但由于var没有块作用域该如何声明var类型的局部变量呢?
{
var a = 10
}
{
var a = 20
}
console.log(a); //20,两个a都是全局变量
2. 虽然var没有块作用域,但是它有函数作用域。
- 但这样写也还是有问题,我们只需要一个a变量而下面这种方式要主动调用函数才能生成a变量,而且调多了可能创建两遍。
- 再有函数也有函数名,也是全局变量,也容易被覆盖。
- 这种方式可行,但是不完美。
function fn1() {
var a = 10
}
fn1() //调用函数,创建局部变量a
function fn2() {
var a = 20
}
fn2() //调用函数,创建局部变量a
3. 我们希望创建一个只执行一次,并且匿名的函数(立即执行函数-IIFE)
- 立即执行函数是一个匿名函数,并且只会调用一次
- 可以利用IIFE创建一个一次性的函数作用域,避免变量冲突的问题
- 立即执行函数书写时必须手动在末尾加个
;
,不然编译器会解析成(xxx)(xxx)前者会被当成函数调用,然而它并不是,浏览器会报错。 - 立即执行函数只防止意外被修改的情况,你要是诚心在立即执行函数体中修改那也是没办法。
//由于是function开头的函数,会被提前执行,执行必须要有函数名,不然会报错。(希望创建匿名函数)
//想办法不让它提前执行,给它用()括起来。此时它就是一个函数对象
//调用函数,函数对象+(),所以直接在整体后面加个()完成调用
(function () { //写法一
var a = 10
})();//这里的分号必须加上
(function () { //写法二
var a = 10
}());
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!