说一下var,const,let吧

421 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情

var

什么是var?

js中声明变量时使用的。

var的缺点

  • 会被声明提前,打乱程序正常的执行顺序;
  • 没有块级作用域 ,代码内的变量会超出代码块范围,影响外部变量;

什么是块级作用域?

js中没有,其他语言没有这个叫法,指除了对象{}和function的{}之外,其余if else、for等分支和循环结构的{}范围,在其他语言中称为跨级作用域,其他语言中,程序块{}内的变量,出了所在的程序块{},就不能使用。

let

什么是let?

js中es6中的新语法,也是用来声明变量的。

let的优点

let能解决var自身声明提前,没有块级作用域的问题。

  • 不会被声明提前,保证程序按照顺序执行;
  • 让程序块,变成“块级作用域”,保证块内的变量,不会影响块外的变量;

let的缺点

  • 因为变量不能声明提前,所以不能在声明变量前,提前使用该变量;
  • 在相同作用域内,禁止声明两个同名的变量;
  • 因为let底层相当于匿名函数自调,所以,即使在全局创建let变量,在window中也找不到 ;
    在旧js中左右全局变量都保存在widnow;
var a=10;  
console.log(a);//10  
console.log(window.a);//10

const

什么是const?

js中es6中的新语法,也是用来声明常量的。

const的优点

  • 不会被声明提前,保证程序按照顺序执行;
  • 初始值不会被篡改;
  • 让程序块,变成“块级作用域”,保证块内的变量,不会影响块外的变量;

const的缺点

  • 不能声明提前,所以不能在声明变量前,提前使用该常量;
  • 必须设置初始值;
  • 不保存在window中;
  • 在相同作用域内,禁止重复赋值;
  • 在相同作用域内,禁止声明两个同名的常量;

总结,var,let,const的区别

image.png