作用域
- es5 作用域
作用域: 变量生效的限定环境
-
全局/顶层作用域 存在于script标签以及js文件
全局作用域内声明的变量称之为全局变量,全局变量,可以在整个作用域内使用.
所有的全局的环境都是互通的
-
函数作用域
1.函数作用域内声明的变量,只能在当前函数作用域内使用,在别的作用域内访问不到.
2.每个函数,都会生成一个独立的函数作用域
3.函数作用域内的函数作用域,属于包含关系,不存在交集的函数作用域,则互不干扰
4.函数使用全局变量,会改变全局变量的值
!!!作用域链 多个作用域相互嵌套
! 当我们处于某一个作用域里面使用变量时,先从自身作用域里面找该变量,如果找不到,就往父级作用域里面查找,直到script作用域,,还是没有就报错
! 当我们处于某一个作用域里面,修改某个变量的值时,先修改自己的,如果没有,就修改父级,直到script作用域都找不到,默认设置全局变量
! 无论什么环境下,没有声明就直接赋值的变量都会泄露成为window的属性,类似全局变量,window下面的属性 比全局还要高 var 和 function声明的全局变量,也会挂载到window的属性 let const不会
挂载上去的属性 可以delete删除 声明的全局变量不行
a = 1; delete a;
- es6新增 块作用域
if for内的 var 声明 如果 if 在 全局作用域内 那么在if内用var 声明的变量则为全局变量.
<