延迟函数及作用域的理解
延迟函数(以下两者的this都指向window)
setTimeout(function () { console.log(123) }, 3000); //只执行一次 setInterval(function () { console.log(123) }, 3000); //连续不断的执行 var id = setTimeout(function () { console.log(456) }, 1000); clearTimeout(id) //清除当前的定时器 clearInterval()
作用域
JavaScript的作用域也称为函数作用域,因为js中作用域的划分是以函数来进行的
局部作用域:
在函数内部能够访问变量的所在区域
在函数内部使用var定义的任意变量都是局部变量
局部作用域对应的作用域我们称之为函数作用域
外部是不能直接访问函数内部的变量
全局作用域:
在代码的任何地方都可以访问的变量,称为全局变量
全局变量是直接绑定在window作用域上面的
直接暴露在script标签中的变量是一个全局的(就是没有看到function的)
注意:作用域以函数来进行划分
在寻找变量的时候,先从自己开始找,逐级向外寻找,找到离它最近的变量,直到window
当我们在函数内部定义变量的时候省略var关键字,则这个变量成了全局变量(不推荐使用)
在写代码的过程中,我们应该尽量少的去使用全局变量
原因:1、使用全局变量容易污染全局空间
2、全局变量很难被垃圾回收机制回收(垃圾回收机制)
声明提升:
变量声明的提升
变量会被提升到它对应作用域的顶端
函数声明提升:
执行语句在声明函数之前,这个函数也是可以被正常来调用的(这是JS中的函数声明提升,并不是编译)
使用声明式函数才可以被提升,使用字面量方式不能被提升
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2020-03-03 了解CSS3文本样式