var let const 区别

在ES6之前,变量的声明只能用var, ES6新增了let和const两中方式声明变量,接下来讲述三者之间在使用时的区别。

  • var存在变量提升,而let和const不存在变量提升,即变量只能在声明之后使用,否则会报错,这在语法上,称为暂时性死区
console.log(a) //undefined
var a='123'

console.log(b) //Cannot access 'b' before initialization
let b='123'

console.log(c) //Cannot access 'c' before initialization
let c='123'
  • 在函数内使用var声明变量时,变量是局部的,而不用var声明直接使用,变量是全局的
  function fun(){
    var a=1 
    b=2
  }
  fun()
  // console.log(a);  // Uncaught ReferenceError: a is not defined
  console.log(b); // 2
  • var可以重复声明,但是let和const不能
var a=12
console.log(a); //12
var a='你好' 
console.log(a); //你好
var a={
  name:'a',
  age:12
}
console.log(a); //{name: 'a', age: 12}

var b=12
console.log(b); 
var b='你好' 
console.log(b); //Identifier 'b' has already been declared
//同理const一样报错
  •  let,var 在声明变量时可以不设置初始值,但是const必须设置初始值
  • var 声明的变量为全局变量时,会将该变量添加为全局对象的属性,但是let const 不会。
  • let const 都是 ES6 新增的用于创建变量的语法。 let 创建的变量是可以更改指针指向
    (可以重新赋值)。但 const 声明的变量是不允许改变指针的指向。
    • 但是 const 保证的并不是变量的值不能改动,而是变量指向的那个内存地址不能变动。对于基本类型的数据(string,number,boolean),指针指向的地址中存的就是变量值,所以不能变动,等同于常量;而引用数据类型(数组,对象),变量指向的内存地址中保存的是一个指针,只要这个指针不变即这个指针指向的内存空间不变就ok了,至于它指向的数据结构改不改变就不能控制了。
   const a='勇敢猪猪'
   a='不怕困难' // Assignment to constant variable.
   const b={
    name:'勇敢猪猪'
   }
   b.name='不怕困难'
   console.log(b); //{name: '不怕困难'}

let、const、var的区别
区别letconstvar
是否具有块级作用域×

是否存在变量提升

××

是否添加全局属性

××
能否重复声明××
是否存在暂时性死区×
能否改变指针指向×
是否必须设置初始值××

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值