作用域有哪些?
一:全局作用域 -- 全局变量
在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垃圾回收机制自动回收,节流性能