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区别的更多相关文章

  1. let var const 区别

    let es6 语法 let是作用域是块级的,即{}内的范围 如果未声明变量就使用的话,报错ReferenceError,而var则会报错undefined(不存在变量提升) 只要块级作用域内存在le ...

  2. js中const,var,let区别(转载)

    js中const,var,let区别 来源:https://www.cnblogs.com/zzsdream/p/6372729.html 今天第一次遇到const定义的变量,查阅了相关资料整理了这篇 ...

  3. javasript中var、let和const区别

    let和const都是es5,es6新版本的js语言规范出来的定义,在这以前定义一个变量只能用var.let和const都是为了弥补var的一些缺陷而新设计出来的. 简单来说是: let是修复了var ...

  4. let、var、const区别(表格比较)

    let.var.const区别(表格比较): 区别项 let var const 作用域 块级作用域 全局作用域或函数作用域 块级作用域 是否有变量提升 无 有 无 是否可重复声明 不可 可以 不可 ...

  5. const,var,let区别(转载)

    1.const定义的变量不可以修改,而且必须初始化. const b = 2;//正确 // const b;//错误,必须初始化 console.log('函数外const定义b:' + b);// ...

  6. const,var,let 区别

    js中const,var,let区别 1.const定义的变量不可以修改,而且必须初始化. 声明的是常量 1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 co ...

  7. ES6中let、const和var的区别

    一.let 1.基本用法 ES6 新增了let命令,用来声明变量. let 的用法类似于 var,但所声明的变量只在 let 命令所在的代码块内有效(一个“{}”相当于一个代码块) { let a = ...

  8. ES6新增语法(一)——let、const、var的区别

    ES6简介 ES6是ECMAScript 6.0的简称,是javascript语言的下一代标准,已经在2015年6月正式发布上线.目的就是为了统一javascript的语法标准,可以用来开发大型应用程 ...

  9. var、let和const区别

    var.let和const区别 变量提升问题 var声明的变量存在变量提升,而let与const声明的变量不存在变量提升,但存在暂时性死区 即在预编译阶段,js引擎扫描代码时,遇到变量声明,会把var ...

  10. 前端面试题:JS中的let和var的区别

    最近很多前端的朋友去面试被问到let和var的区别,其实阮一峰老师的ES6中已经很详细介绍了let的用法和var的区别.我简单总结一下,以便各位以后面试中使用. ES6 新增了let命令,用来声明局部 ...

随机推荐

  1. [编程]UML语言:理论之光与实践之惑

    UML介绍及现状 UML(统一建模语言)是软件工程领域中具有悠久历史的一种模型化语言工具.它通过标准化的图形符号体系,使得软件系统的蓝图能够被更直观地表达出来.UML诞生于20世纪90年代,经过多年积 ...

  2. OPC 协议数据采集

    kepserver   OPC Connectivity Suite 让系统和应用程序工程师能够从单一应用程序中管理他们的 OPC 数据访问 (DA) 和 OPC 统一架构 (UA) 服务器.通过减少 ...

  3. Java 21中的两个值得关注的Bug修复

    在Java 21中,除了推出很多新特性之外,一些Bug修复,也需要注意一下.因为这些改变可能在升级的时候,造成影响. Double.toString()和Float.toString()的精度问题修复 ...

  4. 生物电势测量ECG

    参考来源:ADI官网技术文章.知乎(hxl695822705.KingPo-张超.津发科技.木森.深圳加1健康科技) ECG的产生 ECG(Electrocardiogram)心电测量,是指人体内窦房 ...

  5. SpringBoot项目启动过程动态修改接口请求路径

    背景 最近遇到一个技术需求,需要对其他多个已有的服务进行整合打包为一个整体的服务,项目启动过程发现一个问题,在controller层多个服务之间存在相同的RequestMapping接口请求路径,导致 ...

  6. jvm的jshell,学生的工具

    jshell  在我眼里,只能作为学校教学的一个玩具,事实上官方也做了解释,以下是官方的解释: 在学习编程语言时,即时反馈很重要,并且 它的 API.学校引用远离Java的首要原因 教学语言是其他语言 ...

  7. 踩坑:nacos启动报错提示需要设置JDK环境 ,报错:ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!

    换了个Windows11的新电脑,因为个人工作.学习需要,就重新下载了Nacos并解压使用,结果就踩了个坑,使用下面命令启动Nacos服务端时: startup.cmd -m standalone 直 ...

  8. Head First Java学习:第十四章-序列化和文件

    第十四章 序列化和文件的输入输出 保存对象 1.什么是序列化和反序列化 在编程的世界当中,常常有这样的需求:我们需要将本地已经实例化的某个对象,通过网络传递到其他机器当中,为了满足这种需求,就有了所谓 ...

  9. 7 HTTP 的报文

    目录 1 报文结构 TCP的报文 HTTP协议的报文 2 请求行:request line 3 状态行:status line 4 头部字段 5 常用头字段 基本的头信息 1. Host 字段(必须) ...

  10. Tensorflow2.0实现VGG13

    导入必要的库: import os import tensorflow as tf from tensorflow import keras from tensorflow.keras import ...