时间:2021-05-18
一、let和var区别
1.关于变量提升,var能变量提升,let不能
2.暂时性死区:块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外部的影响重点内容,简而言之,就是某个代码块有let指令,即使外部有名称相同的变量,该代码块的同名变量与外部的变量也互不干扰。而var不会,如下所示:
总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。例子如下:
var tmp=1;if (true) { // TDZ开始 tmp = 'abc'; // ReferenceError console.log(tmp); // ReferenceError let tmp; // TDZ结束 console.log(tmp); // undefined tmp = 123; console.log(tmp); // 123}console.log(tmp); //3.let声明绑定的代码块内,不能重复声明同一个变量,var可以
4.类似for循环的代码块,let只在代码块内部有效,var在代码块外部也有效
二、let和const
1、相同点:
A、变量不提升。
B、暂时性死区,只能在声明的位置后面使用。
C、不可重复声明。
2、不同点:
let声明的变量可以改变。
const声明一个只读的常量。一旦声明,常量的值就不能改变,且声明的时候必须初始化赋值。
let a; //undefined
const b;//报错,声明的时候必须赋值
let a=1;
a=2; //可改变
const b=1;
b=2; //报错,不能改变值
//一些自己觉得要注意的点
let a=null; //a=null
a=undefined; //a=undefined
a=2; //a=2
const a=null; //a=null,const也可以定义null和undefined
const b=undefined; //b=undefined
b=2; //报错,不能改变值
本质:
const实际上保证的,并不是变量的不得改动,而是变量指向的那个内存地址所保存的数据不得改动。
A、五种基本数据类型(Number,String,Boolean,Undefined,Null):值就保存在变量指向的那个内存地址,等同于常量。不能改变值。
B、复杂数据类型(Object:数组、对象):该类型变量名不指向数据,而是指向数据所在的地址,const只保证变量名指向的地址不变,并不保证改地址的数据不变,因此可以对该地址的属性值进行修改,但是不能改变地址指向。
总结
以上所述是小编给大家介绍的var,let,const的异同点,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在JavaScript中有三种声明变量的方式:var、let、const。下文给大家介绍js中三种定义变量的方式const,var,let的区别。1.const
ES6——let和const命令引言本文主要讲解ES6中变量的相关操作,变量的命名,讲解var、let、const三者的区别正文ES6中的let和const都是
本文实例讲述了ES6学习笔记之let与const用法。分享给大家供大家参考,具体如下:在ES6中不是var,而是通过let来声明变量,用const来声明常量,有
一、let和constlet:声明变量,只在声明的块级作用域(大括号)内起作用[注意:let不向var那样可以自动提升]如果一个区块内存在let或const命令
ECMAScript6新增const和let命令,用来声明变量。声明方式变量提升作用域初始值重复定义const否块级需要不允许let否块级不需要不允许var是函