const和let和var

本文详细介绍了JavaScript中const、let和var的区别。const定义的常量不可更改其指向的内存地址,但引用类型的数据可修改属性。let和var在作用域、变量提升和重复声明方面有所不同,let具有块级作用域,无变量提升且不允许重复声明。文章还对比了var的全局和函数作用域。通过实例解析,帮助开发者更好地理解和运用这些概念。
摘要由CSDN通过智能技术生成

最近老是用到const,然后就是发现自己最熟悉的就只是const是定义常量,let和var是定义变量,let和var的一些区别也清楚一些,但是对于const真的了解甚少,所以抽个空总结补充一下.

一 const 常量到底可不可以修改

	虽然const定义的值不可改变,但是我们很多人都知道const定义的对象,也是能修改到他的属性值的
	const obj={a: 1}
	obj.a = 2;
	
	其实原因很简单: 我们都知道引用类型的变量他们是保存在内存中的,我们的变量上赋予的只是指向这个变量的内存地址.
	所以const定义的引用类型的值不可修改,其实是指向地址不可修改,但是保存的属性是可以修改的.

二 let 和 var

1.作用域

var 有全局作用域和函数作用域
var 声明的全局变量,可以用this和window访问,函数的中的变量,在函数中都可以访问,比如多个独立循环不要用同样的索引值

var a = 1;
console.log(window.a); // 1
console.log(this.a); // 1

function fun() {
	for(var i = 0; i <= 5; i++) {
	}
	console.log(i); // 6
}

let 只有块级作用域

function fun() {
	for(let i = 0; i <= 5; i++) {
	}
	console.log(i); //报错
}
2.变量提升

在这里插入图片描述

var 的声明会被提到最前面,即上图代码:
var str1;
console.log(str1);
str1 = '1';
而let没有变量提升,并且在变量let之前被使用,会报ReferenceError
因为在代码块中,let在声明的时候,从代码块顶部到该变量的let声明处成为一个暂时性死区,在该死区之内该变量的都报错.

3.重复声明

var可以重复声明,不会报错
let重复声明会报错

	let str1;
    let str1;  //报错

    var str2;
    let str2;   //报错

    let str3;
    var str3;  // 报错

    var str4;
    var str4;   //不报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值