美文网首页
var、let、const 的区别

var、let、const 的区别

作者: 行走的蛋白质 | 来源:发表于2019-12-18 09:44 被阅读0次
  • 什么是提升,什么是暂时性死区,var、let、const的区别?
提升 hoisting
  • 提升示例 1
console.log(num1) // undefined
var num1 = 1

console.log(num2) // 抛错
let num2 = 2

如上述示例:num1还没有被声明,但是我们可以使用它,这种情况就是变量提升。var 可以 let 不可以。
上述 var 声明变量等同于如下写法:

var num1
console.log(num1) // undefined
num1 = 1
  • 提升示例 2
var num1 = 666
var num1
console.log(num1) 

上述示例打印结果并不是 undefined 而是 666,变形如下:

var num1
var num1
num1 = 666
console.log(num1) // 666
  • 提升示例 3
console.log(fun1) // function() {}
function fun1() {

}
var fun1 = 2
console.log(fun1) // 2

上述示例说明函数也会提升,并且优于变量提升。

  • 提升示例 4
var num1 = 1
let num2 = 2
const num3 = 3

console.log(window.num1) // 1
console.log(window.num2) // undefined
console.log(window.num3) // undefined

function fun1() {
    console.log(num1) // 抛错
    let num1
}
fun1()

上述示例说明由 let 和 const 声明的变量并不会挂载到 window 上面,区别于 var
如果一个变量在声明前被使用就会报错原因就是由 let 和 const 声明的变量存在暂时性死区

  • 提升存在的意义:解决函数间相互调用的情况,如下示例:
function fun1() {
    fun2()
}
function fun2() {
    fun1()
}
fun1()

如果不存在提升,就不会存在 fun1 在 fun2 前面的同时 fun2 又在 fun1 前面的情况。

小结:
  • 函数提升优于变量提升,函数提升会把整个函数移到作用域的顶部,变量提升只会把声明移到作用域的顶部。
  • var 存在提升,我们能在声明之前使用;let、const 因为暂时性死区的原因不能在声明之前使用。
  • var 在全局声明变量会被挂载到 window 上面,let、const 不会。
  • let 和 const 作用基本一致,但 const 声明的变量值不允许改变。

相关文章

  • Android菜鸟学习js笔记 一

    一、var,const,let区别? var 变量,const 常量,let块级变量。

  • es6

    1、let 和const(定义变量) (1)var 、let 、const的区别 a、作用域区别var 变量声明会...

  • JS中var、let、const区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • js中const,var,let区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • 面试题 var let const的区别 箭头函数和普通函数的区

    var let const 有什么区别 var var声明的变量可进行变量提升,let和const不会var可以重...

  • let和const

    let/const(常用) let和var 区别 let,const用于声明变量,用来替代老语法的var关键字,与...

  • js 2022经典面试题汇总

    1.JS数据类型有哪些 2.var、let、const区别 var存在变量提升,而let、const没有 let、...

  • ES6

    定义变量 let const 和 var 的区别 var 会进行预解析let / const 不会进行预解析预解析...

  • js 中 var let const 的区别

    很多人认为 var 和 let const 的区别在于,var 会变量提升,而 let const 不会,虽然可以...

  • const let var区别以及使用

    const let var区别如下: 1)var 声明的范围是函数作用域,let 和 const 声明的范围是块作...

网友评论

      本文标题:var、let、const 的区别

      本文链接:https://www.haomeiwen.com/subject/ocyynctx.html