var、let、const之间的区别

一、ECMAScript和JavaScript的关系。

ECMAScript是JavaScript的规范,JavaScript是ECMAScript的实现。

二、var 和ES6新增的的let、const之间的区别:
1.var 属于函数作用域

function v (){
    var a = 100;
    if(true){
        var a = 200;
    }
    console.log(a)//a----200 if--如果条件为真 var a = 200;否则就不执行if语句,那打印a--100
}
v();
总结:
/*
当全局作用域和局部作用域中的变量名相同,取局部作用域的变量(这句话只针对于 var)
*/

2.let和const属于块级作用域

function l (){
    let a = 100;
    if(true){
        let a = 200;
    }
    console.log(a)//a----100 打印的是外面的if外面的a
}
l();

function c (){
    const a = 100;
    if(true){
        const a = 200;
    }
    console.log(a)//a----100 打印的是外面的if外面的a
}
c();
总结:
/*
一对花括号{}就是一个块级作用域
*/

3.只有var存在变量提升,let和const不存在变量提升

console.log(a);//a----undefined
var a = 123;

console.log(a);//报错
let a = 123;

console.log(a);//报错
const a = 123;

在这里插入图片描述
在这里插入图片描述
4.let和const在同一个作用域下不能重复定义通相同的变量名

var a = 123;
var a = 12;
console.log(a);//12

let a = 123;
let a = 12;
console.log(a);//报错

const a = 123;
const a = 12;
console.log(a);//报错

在这里插入图片描述
在这里插入图片描述
5.const声明的是一个只读的 常量(基本类型),一旦声明,常量的值就不改变

let a = 100;
a = 99;
console.log(a)//a----99
const a = 100;
a = 99;
console.log(a)//报错

在这里插入图片描述
6.const 一旦声明了就必须初始化,不能只声明不赋值

let a;
console.log(a)//undefined

const a;
console.log(a)//报错

在这里插入图片描述
7.const声明的常量(引用类型),即数组和对象,指向的是对应的内存地址不能改动,对应的值是可以修改的

const arr = [];
arr[0] = 1;
console.log(arr)//arr----[ 1 ]

const obj = {};
obj.name = 'abc';
console.log(obj)//obj----{ name: 'abc' }

//错误写法
const obj = {};
const obj ={id:1} ;
console.log(obj)//报错--- SyntaxError: Identifier 'obj' has already been declared

总结:
/*
声明的常量是基本类型,那么常量的值不可以改变
声明的常量是引用类型的话,它的不变是指对应的内存地址不能改变,值是可以改变的
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值