作用域有哪些?

404 阅读1分钟

作用域有哪些?

一:全局作用域 -- 全局变量

在scripts标签中直接声明的变量,就有全局作用域:因为它在整个script标签中都可以用

 let age = 2

二:局部作用域:也叫函数作用域 -- 局部变量 在函数内部声明的变量,在函数外部不能使用(形参相当于函数的局部变量)

 function test() {
   let age = 20
 }
 test()
 console.log(age

三:块级作用域 -- 块级变量 块:就是指{ } let 会有块级作用域:它的作用域是: 1.作用域:let变量所在的{}结构 2.有效作用域:从定义这个变量开始,到这个变量所在结构的}结束

 if (true) {
   console.log(age) // Cannot access 'age' before initialization
   let age = 20
   // console.log(age) // 20
 }
 console.log(age) // age is not define

如果一个就是没有使用let声明,而是直接使用,相当于定义一个真正意义的全局变量,它会将这个变量挂载到window全局,页面不关闭,变量不释放,严重的会造成全局污染 // let不会挂载到全局的window,循环执行完毕之后,会由js垃圾回收机制自动回收,节流性能