JavaScript中var、let、const的使用和区别

发布时间 2023-06-19 15:22:34作者: 鱼仔_yuzai

var:

  • var 是声明变量的主要关键字,它的作用域是函数作用域
  • 函数作用域:意味着变量在函数内部声明是可见的,在函数外部声明是不可见的
  • var 声明的变量可以被重新声明和赋值,它可以在同一个作用于下多次声明同一个变量

let:

  • let 的作用域是块作用域,块作用域可以是函数、条件判断等内部{}包围的区域
  • 与 var 不同的是,使用 let 声明的变量只有在块作用域才有效,并且不会被提升(hoisting),必须在使用之前先进行声明
  • let 变量也可以被重新赋值,但是不能重新声明变量

const:

  • const 用来声明常量,也就是用来声明一旦赋值就不能发生改变的变量
  • const 与 let 相似,作用域也是块作用域,也不会被提升
  • 与 let 和 var 不同的是,const 声明的变量必须在声明时进行初始化,并且不能再被赋值
  • const 声明的常量仅限于绑定的引用不变,而不是值本身不改变,对象或数组是可以修改属性或元素,但是不能重新赋值为不同的对象或数组

总结

  • 使用 var 声明的变量具有函数作用域,可以被重新赋值和声明
  • 使用 let 声明的变量具有块作用域,可以被重新赋值,但是不能再同一作用域下再次声明
  • 使用 const 声明的变量也具有块作用域,但是不能重新赋值和声明

推荐使用做法:

  • 如果变量的值不需要再重新赋值,可以使用 const
  • 如果变量的值需要重新赋值,可以使用 let
  • 尽量避免使用 var,因为他的作用域和变量提升可能导致一些意外情况