let var const 的区别

一、var变量
1.var有变量提升
二、let变量
let声明变量有以下几个特点:
1.没有变量提升,var有变量提升

function sayname() {
console.log(name)
console.log(age)
var name = “lili”
let age = “20”
}
sayname()
// undefined
// Uncaught ReferenceError
上面打印也很好理解:var 有变量提升,有个预解析的过程,所以在打印之前相当于先var name,然后再name = “lili”,所以第一个打印为undefined。第二个打印因为let没有预解析过程,所以就直接报错了。
2.不可以重复声明。
重复声明问题:

    var a = 1
    var a = 3
    let b = 2
    let b = 3

很简单,当你在一个块级作用域声明了一个b,你不能再声明b,否则会报错,当然在不同的块级作用域是可以重复声明的。然而var就可以
3.{}代表块级作用域,let有块级作用域,var只有函数作用域。
块级作用域与函数作用域问题:

     function tes(){
    	var a = 'var ok'
    	let b = 'let ok'
    	for (var i = 0; i < 1; i++) {
    	var a = 'var change'
    	let b = 'let change'
    	}
    	console.log(a)
    	console.log(b)
    }
    tes()

打印:var change let ok

因为var只有函数作用域的概念,所以命名相同参数在同一作用域下会覆盖的,而let有块级作用域,function和for循环是两个不同的作用域,所以打印b不会取不同作用域的值。

三、const声明的常量
const声明常量,只可以声明一次,并且必须赋值,可以防止命名冲突,防止之后发生错误的修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值