关于 let var const

139 阅读1分钟

关于 let var const

  1. 先说let const的区别 let声明的是变量,const声明的是常量 指针指向的内存地址不可改变 但内存内容可以改变
  2. 再说var与let,const的区别
  • 1.块级作用域 let const 是具有块级作用域的 只能在声明的代码块内使用 而var没有这个限制
  • 2.暂时性死区 var 没有 let const有 即先声明后使用 不然会报错 可能会想到 变量提升 但是看过袁老师(渡一)的讲解后 关于这部分内容 感官角度 var有变量提升 而let const没有 因为先使用后声明毕竟用不了嘛 概念角度 三者都有变量提升 只是 let const 在声明前有一把所谓的“锁”,导致声明前使用不了,而var却没有这把“锁” 所以看你从哪个角度理解
  • 3.全局污染 var 声明的变量会到全局window下 而let const 不会 image.png 这段代码 循环三次后 放入宏任务队列三行代码 开始执行 let声明的i 有块级作用域 所以三次循环中 i是三个变量 不会被污染,而var声明的x 是全局作用域 导致三次循环中 三个x是一个变量 所以会造成全局污染 注:var有跨越标签 let虽然没有全局污染 但是let可以跨越标签
  • 4.重复声明 let a = 1 let a = 2 以上代码会报错 var b = 8 var b = 3 以上不会报错