let、var、const之间的区别

let、var、const之间的区别

let是es6的新语法,用来局部变量和 var类似但是 let只在代码块里有效,也就是块作用域

变量提升 是什么意思这里很多小伙伴会理解错

var a = 10;
    func();
    function func(){
    console.log(a);  //这里输出 undifined 
    var a = 10;
    console.log(a);   // a=0
}

很奇怪这里为什么是 undifined 这就是变量提升

上面的代码等价于

var的变量提升就是会先把var定义的变量提到代码最前进行声明,执行到指定指定代码再进行赋值

var a = 10;
		func();
		function func(){
			var a ;   
			console.log(a);  //这里输出 undifined
			a = 10;
			console.log(a);   // a=0
		}

并且要注意 {} 无法限制var

{
	var a = 10;
}
console.log(a);  //a=10
{
	let b = 10;
}
console.log(b); //Uncaught ReferenceError: b is not defined

let 和 var区别有四点

1.let有暂时性死区(就是在声明变量前无法使用)

  1. let没有变量提升

  2. let不能重复声明

  3. let有更小的作用域

  4. 声明全局变量

    function varTest() {
    var a = 1;
    
    {
    var a = 2; // 函数块中,同一个变量
    console.log(a); // 2
    }
    
    console.log(a); // 2
    }
    
    function letTest() {
    let a = 1;
    
    {
    let a = 2; // 代码块中,新的变量
    console.log(a); // 2
    }
    
    console.log(a); // 1
    }
    
    

const和let的区别

相同点:

​ const 和let都是块级作用域

不同点:

​ let 声明的变量可以改变 const声明的变量不能改变(这里注意const是不可改变是指地址不可改变)

​ const 声明时必须赋值

cosnt a;报错 Uncaught SyntaxError: Missing initializer in const declaration
const obj = {
    person:'zhangsan',
    age:17
}
console.log(obj);
obj.age=20;
console.log(obj);

当const赋值对象的时候是可以进行修改的

在这里插入图片描述

const obj = {}
		obj.test = '123'; 
		console.log(obj); //{test:123}
		const arr = [];
		arr.push('test')
		console.log(arr);// array(1)
		
		obj = {}; //报错
		arr= [''] //报错

//{test:123}
const arr = [];
arr.push(‘test’)
console.log(arr);// array(1)

	obj = {}; //报错
	arr= [''] //报错

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值