let var const 的区别

var与let、const的区别
var与let、const
一、var声明的变量会挂载在window上,而let和const声明的变量不会:
var a = 100;
console.log(a,window.a); // 100 100

let b = 10;
console.log(b,window.b); // 10 undefined

const c = 1;
console.log(c,window.c); // 1 undefined
二、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 is not defined ===> 找不到c这个变量
const c = 10;
三、let和const声明形成块作用域
if(1){
var a = 100;
let b = 10;
}

console.log(a); // 100
console.log(b) // 报错:b is not defined ===> 找不到b这个变量
if(1){

var a = 100;
    
const c = 1;

}
console.log(a); // 100
console.log© // 报错:c is not defined ===> 找不到c这个变量
四、同一作用域下let和const不能声明同名变量,而var可以
var a = 100;
console.log(a); // 100

var a = 10;
console.log(a); // 10
let a = 100;
let a = 10;

// 控制台报错:Identifier ‘a’ has already been declared ===> 标识符a已经被声明了。
五、暂存死区
var a = 100;

if(1){
a = 10;
//在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a,
// 而这时,还未到声明时候,所以控制台Error:a is not defined
let a = 1;
}
六、const
/*

  • 1、一旦声明必须赋值,不能使用null占位。
  • 2、声明后不能再修改
  • 3、如果声明的是复合类型数据,可以修改其属性
  • */

const a = 100;

const list = [];
list[0] = 10;
console.log(list);  // [10]

const obj = {a:100};
obj.name = ‘apple’;
obj.a = 10000;
console.log(obj);  // {a:10000,name:‘apple’}

转载
https://www.cnblogs.com/zhaoxiaoying/p/9031890.html

var let const 最好不要混用 let const 是有作用域限制的 这一点一定要注意
function say(){
console.log(name);
console.log(age);
var name=“tt”;
let age=23;
}
say();
会报错 :Uncaught ReferenceError: age is not defined
如果 将 let 改为 var 则不会报错;

ES5 有两种声明变量的方法:var 和 function命令
ES6 有六种声明变量的方法:var 、 function 、let 、const 、import、class命令。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值