var let const的区别

什么是变量提升?

先解释一下变量提升
JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。
JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明
下边说他们的区别

var

一)var声明变量存在变量提升,let和const不存在变量提升

console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值
var a = 100;
console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
let b = 10;
console.log(c); // 报错:c is not defined  ===> 找不到c这个变量
const c = 10;

再来看这段代码

function fn() {
   //var a
    if (true) {
        console.log(a + ' now')
    }
    else {
        var a = 1
        console.log(2)
    }
}

fn() // a -> undefined

我们发现不执行的代码也会影响会执行的代码,因为var a会提升到if语句的前面
undefined可以翻译为不明确,not defined可以翻译为未定义

在Java中变量的分为全局变量或者局部变量,在方法体中定义的变量都是局部变量,否则是全局变量(即在方法体外,在类中定义的变量)
在JavaScript中,在方法体外外用var定义的变量其它方法可以共享,在方法中用var定义的变量只有该方法内生效。

二)let、const都是块级局部变量 并且const声明出来的是一个不可以被改变的常量

{
    let a = 1
}
console.log(a) // undefined

const 的特性和 let 完全一样,不同的只是
1)声明时候必须赋值
const声明的变量必须赋值 否则会报错
2)只能进行一次赋值,即声明后不能再修改
在这里插入图片描述
3)如果声明的是复合类型数据,可以修改其属性

三)同一作用域下let和const不能声明同名变量,而var可以

const a =2
const a=1
//会报错 SyntaxError: Identifier 'b' has already been declared
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值