let, const, var的区别

let和const是ES6里面的语法,学ES6之前都是用var来定义变量
区别一:重复声明
只有var可以进行重复声明,对let和const进行重复声明会报错

//1.不允许重复声明;
let dog="狗";
let dog="狗";
//报错:UncaughtSyntaxError:Identifier'dog'hasalreadybeen
declared
//3.不允许重复声明;
const CAT="喵喵";
const CAT="喵喵";


区别二:变量提升
定义:就是在变量创建之前使用(比如输出:输出的是默认值)
只有var可以进行变量提升,对let和const进行变量提升会报错

console.log(people1);//可输出默认值
console.log(people2);//报错:UncaughtReferenceError:people2isnot
defined
console.log(people3);//报错:UncaughtReferenceError:people3isnot
defined
var people1="大哥";//存在变量提升
let people2="二哥";//不存在变量提升
const people3="二哥";//不存在变量提升

运行结果:


区别三:作用域
只有var没有块级作用域,let和const有块级作用域
常见的作用域主要分为:全局作用域、函数作用域、块状作用域、动态作用域。
定义:块级作用域:大部分包含{}的都可以构成块级作用域,但是函数和对象不构成块级作用域

//2.块儿级作用域(局部变量);
{
var cat="狗"
let cat="猫";
console.log(cat);
}
console.log(cat);
//狗
//狗
//猫
//报错:Uncaught ReferenceError:cat is not defined
//5.块儿级作用域(局部变量);
{
const CAT="喵喵";
console.log(CAT);
}
console.log(CAT);
//喵喵
//报错:Uncaught ReferenceError:CAT is not defined

const独有属性:
1.声明必须赋初始值
2.值不允许修改(对数组元素的修改和对对象内部的修改是可以的(数组和对象存的是引用地址);)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容