let、var、const区别
1、var:传统的变量声明方式
在ES5及之前的JavaScript版本中,我们通常使用var关键字声明变量。var具有以下特点:
函数作用域:变量的作用域限制在声明的函数内部,如果在函数外部访问,将会报错。
变量提升:变量声明会被提升到作用域的顶部,无论声明语句在哪里,都会被视为在作用域的开始处声明的。
可以重复声明:同一个作用域内,可以多次使用
var声明同一个变量,后面的声明会覆盖前面的。
var a = 1;
var a = 2;
console.log(a); //打印输出 2 console.log(b); //打印输出 undefined
var b = 1;
var b = 2;
2、let:块级作用域的变量声明方式
let关键字是在ES6中引入的新特性,具有以下特点:
块级作用域:使用
let声明的变量仅在其所在的代码块内有效,如果在代码块外部访问,将会报错。这种特性有助于提高代码的可读性和可维护性。不可重复声明:同一个作用域内,不可以多次使用
let声明同一个变量,否则会报错。没有变量提升:
let声明的变量不会被提升到作用域的顶部,只有在声明语句之后才能使用。
function test() {
let x = 12;
console.log(x);
}
console.log(test()); //打印结果为 12
console.log(x); //报错 x is not undefined 即x没被定义
在上面的例子中,变量x只在大括号内部的代码块中有效,尝试在代码块外部访问会导致错误。这种行为使得我们可以更好地控制变量的作用范围,提高代码质量。
3. const: 声明常量的方式
const关键字也是在ES6中引入的新特性,与let相似,但具有以下特点:
常量:使用
const声明的变量是常量,意味着一旦被赋值后,就不能再修改。常量的命名通常使用全大写字母,并采用下划线分隔单词。块级作用域:与
let一样,const也具有块级作用域。不可重复声明:同一个作用域内,不可以多次使用
const声明同一个变量,否则会报错。
const PI = 3.14;
console.log(PI); //打印 3.14
PI = 3.1415; //报错:常量赋值不可改变
4、总结

参考文章:
一看就懂的var、let、const三者区别 - 知乎 (zhihu.com)
let、var、const区别的更多相关文章
- let var const 区别
let es6 语法 let是作用域是块级的,即{}内的范围 如果未声明变量就使用的话,报错ReferenceError,而var则会报错undefined(不存在变量提升) 只要块级作用域内存在le ...
- js中const,var,let区别(转载)
js中const,var,let区别 来源:https://www.cnblogs.com/zzsdream/p/6372729.html 今天第一次遇到const定义的变量,查阅了相关资料整理了这篇 ...
- javasript中var、let和const区别
let和const都是es5,es6新版本的js语言规范出来的定义,在这以前定义一个变量只能用var.let和const都是为了弥补var的一些缺陷而新设计出来的. 简单来说是: let是修复了var ...
- let、var、const区别(表格比较)
let.var.const区别(表格比较): 区别项 let var const 作用域 块级作用域 全局作用域或函数作用域 块级作用域 是否有变量提升 无 有 无 是否可重复声明 不可 可以 不可 ...
- const,var,let区别(转载)
1.const定义的变量不可以修改,而且必须初始化. const b = 2;//正确 // const b;//错误,必须初始化 console.log('函数外const定义b:' + b);// ...
- const,var,let 区别
js中const,var,let区别 1.const定义的变量不可以修改,而且必须初始化. 声明的是常量 1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 co ...
- ES6中let、const和var的区别
一.let 1.基本用法 ES6 新增了let命令,用来声明变量. let 的用法类似于 var,但所声明的变量只在 let 命令所在的代码块内有效(一个“{}”相当于一个代码块) { let a = ...
- ES6新增语法(一)——let、const、var的区别
ES6简介 ES6是ECMAScript 6.0的简称,是javascript语言的下一代标准,已经在2015年6月正式发布上线.目的就是为了统一javascript的语法标准,可以用来开发大型应用程 ...
- var、let和const区别
var.let和const区别 变量提升问题 var声明的变量存在变量提升,而let与const声明的变量不存在变量提升,但存在暂时性死区 即在预编译阶段,js引擎扫描代码时,遇到变量声明,会把var ...
- 前端面试题:JS中的let和var的区别
最近很多前端的朋友去面试被问到let和var的区别,其实阮一峰老师的ES6中已经很详细介绍了let的用法和var的区别.我简单总结一下,以便各位以后面试中使用. ES6 新增了let命令,用来声明局部 ...
随机推荐
- Python读取Ansible playbooks返回信息
一.背景及概要设计 当公司管理维护的服务器到达一定规模后,就必然借助远程自动化运维工具,而ansible是其中备选之一.Ansible基于Python开发,集合了众多运维工具(puppet.chef. ...
- 有哪些可部署的, 无需编程的,基于WEB的数据可视化工具
基于Web的数据可视化工具在当今数字化时代具有重要的作用,可以帮助企业和个人更好地理解和利用数据.以下是一些无需编程即可部署的基于Web的数据可视化工具,详细描述如下:Tableau Public: ...
- Centos8离线安装golang
一.下载golang 1.下载安装包 2.下载后解压. tar -zxvf go1.17.linux-amd64.tar.gz 二.配置环境变量 vim /etc/profile 1.在环境变量最后添 ...
- pytorch学习笔记——训练时显存逐渐增加,几个epoch后out-of-memory
问题起因:笔者想把别人的torch的代码复制到笔者的代码框架下,从而引起的显存爆炸问题 该bug在困扰了笔者三天的情况下,和学长一同解决了该bug,故在此记录这次艰辛的debug之路. 尝试思路1:检 ...
- MySQL运维12-Mycat分库分表之按天分片
一.按天分片 指定一个时间周期,将数据写入一个数据节点中,例如:第1-10天的数据,写入到第一个数据节点中,第2-20天的数据写入到第二个节点中,第3-30天的数据节点写入到第三个数据节点中. 说明1 ...
- 【2020】装了VirtualBox后VMware Workstation无法使用SSH连接Centos的解决方法
装了个VirtualBox,然后发现无法使用Xshell远程Vmware中的centos了,一开始感觉是虚拟网卡冲突了,发现把VirtualBox的虚拟网卡禁用就可以使用,但是好麻烦啊??每次我特么要 ...
- 字节国际化TnS算法实习的碎碎念
Motivation 在保研之后,我和南大的导师投了一篇个性化联邦学习的CVPR作为毕设.之后感觉就没什么事了,于是想着找个实习吧,第一个想法就是去字节实习,也只投了字节(别学我,还是多投一些哈哈,找 ...
- 【C++】【图像处理】灰度直方图实现算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)
前情提要:本记录需要一定的C++和图像处理基础进行阅读. 图像处理算法学习记录: Code: 1 void histCompute(BYTE*image, int width, int height) ...
- Vue学习笔记-快速入门
整体代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- Python——第一章:循环语句while
循环语句可以让我们的代码重复的去执行 while循环: while 条件: 代码 过程: 判断while循环的条件是否为真, 如果真, 执行代码. 然后再次判断条件.....直到条件为假 ...