var 与ES6的let和const区别

深入AOSP构建系统:从BUILD_FINGERPRINT的生成逻辑,看如何定制你的Android设备标识 本文深入解析AOSP构建系统中的设备指纹生成机制,详细介绍了BUILD_FINGERPRINT的生成逻辑及其在Android设备中的关键作用。通过分析多个指纹属性的区别与联系,以及如何定制设备标识,帮助开发者更好地理解和掌握Android系统构建过程。 阅读详情

var

1. 存在变量提升

console.log(a);//undefined
var a = '1';

2. var没有块级作用域

//var在循环内使用,循环外也可以使用
for(var i = 0;i < 5;i++){
    console.log('for:',i);
}
console.log('outFor',i);
// for: 0
// for: 1
// for: 2
// for: 3
// for: 4
// outFor 5

//-----------------------------------------------------------------
//在上面例子的基础上我们加强一下理解
//eg:我们全局声明了数组arr,
var arr = [];
for (var i = 0; i < 5; i++) {
   arr[i] = function () {
     console.log(i);
   };
 }
 arr[2](); //5
//代码解释:
//上面代码中,var声明的i全局范围都可访问,因此全局只有一个变量i。
//每次循环,i的值都会自动++。
//给数组arr赋值的函数其内部打印的i,都是一个。
//所以,输出的是最后一轮的i的值,也就是 5;

3. 声明:可以反复定义

var a =1;
var a =2;
//a:2

let

1. 不存在变量提升

console.log(a);//Uncaught ReferenceError: a is not defined;
let a = '1';

2. let有块级作用域

{
  var x = 10;  // 使用 var 声明的变量具有函数作用域,并非真正的块级作用域
  let y = 20;  // 使用 let 声明的变量具有块级作用域
}

console.log(x);  // 输出:10,因为 var 声明的变量具有函数作用域,在块外部仍然可访问
console.log(y);  // 报错:y is not defined,因为 let 声明的变量具有块级作用域,在块外部无法访问

//熟悉了上面的,我们来深入了解let
//let在循环内使用,外部无法访问
for(let i = 0;i < 5;i++){
    console.log('for:',i);
}
console.log('outFor',i);
// for: 0
// for: 1
// for: 2
// for: 3
// for: 4
// outFor i is not defined

//-----------------------------------------------------------------
//在上面例子的基础上我们加强一下理解
//eg:我们全局声明了数组arr,for内用let声明i
var arr = [];
for (let i = 0; i < 5; i++) {
   arr[i] = function () {
     console.log(i);
   };
 }
 arr[2](); //2
 arr[5](); //5
//代码解释:
//let 声明的i会产生一个块级作用域互补影响下;
//{
//   arr[0] = function () {
//     console.log(0);
//   }; 
//}
//.
//.
//{
//   arr[5] = function () {
//     console.log(5);
//   }; 
//}

3. 声明:不可重复声明

let a = 1;
let a = 2;
//他会告诉你a已经声明了
//Uncaught SyntaxError: Identifier 'a' has already been declared

const

1. 声明常量,一旦声明就不可更改,因此我们在声明的时候就要初始化值;

2. 这样设计的目的是为了确保代码的可靠性和安全性,防止意外的变量修改; 

//---擅自更改---
const x= 'aaa';
x = '123';
//===报错===
// Assignment to constant variable.

//---只声明不赋值---
const x
//===报错===
//Uncaught SyntaxError: Missing initializer in const declaration
//在const声明中缺少初始化式

⚠️:如果声明的是复合类型数据,可以修改其属性。

const obj = {a:'1'}
obj.a = 2
//obj {a: 2}

1. 不存在变量提升 

console.log(a)// Uncaught ReferenceError: a is not defined
const a = 1

 2. const有块级作用域

const的作用域与let相同,只在声明所在的块级作用域内有效。

{
    const str = 'aaa'
    console.log('块内:',str) //块内:aaa
}
console.log('块外:',str) //str is not definedat

 3. 声明:不可重复声明

区别总结:

上面已经一一说明的每个声明的含义和使用规则,下面我用表格的形式总结一下:

变量提升块级作用域重复声明
var✅❌✅
let❌✅❌
const❌✅❌

块级作用域优点

我们在es6之前使用var来声明,但是因为块级作用域的情况,ES6后新增了let和const

其优点在于

  1. 避免变量污染: 块级作用域可以使变量的作用范围仅限于一个代码块内部,防止变量泄漏到其他代码块中,从而避免了变量污染问题。

  2. 避免命名冲突: 在 JavaScript 中,全局作用域中声明的变量很容易与其他模块或库中的变量重名,导致命名冲突。使用块级作用域可以避免这种问题,因为在不同的代码块中声明的变量将彼此独立,不会发生命名冲突。

  3. 提高程序的可读性: 通过将相关变量定义在同一个代码块中,可以使程序更易读、易理解。如果一个变量只在一个特定的代码块中使用,那么将其定义在该代码块内部可以更加清晰地表达变量的作用范围。

  4. 提高程序的可维护性: 使用块级作用域可以降低程序的耦合度,使不同的代码段之间具有更好的独立性。这样,在修改一个代码块时,不会影响到其他代码块,从而提高程序的可维护性。

k8s中如何使用gpu、gpu资源讲解、nvidia gpu驱动安装 gpu资源也是服务器中常见的一种资源,gpu即显卡,一般用在人工智能、图文识别、大模型等领域,其中nvidia gpu是nvidia公司生产的nvidia类型的显卡,amd gpu则是adm公司生产的amd类型gpu。企业中服务器最常见的就是英伟达gpu服务器了。本篇也主要讲解英伟达驱动相关的知识。 阅读详情

相关推荐

手把手教你学Simulink--基于故障诊断与容错控制的场景实例:电动汽车电机驱动系统的故障检测与隔离

本文介绍了基于Simulink的电动汽车电机驱动系统故障诊断与隔离(FDI)仿真建模方法。通过构建永磁同步电机(PMSM)驱动系统模型,实现了IGBT开路、电流传感器漂移等典型故障的注入与检测。重点阐述了基于观测器的残差生成方法,以及利用Stateflow实现的故障隔离逻辑。仿真结果表明,该系统能在85ms内准确识别故障类型,隔离准确率达97%,并支持容错控制。文章还探讨了AI故障预测、数字孪生等高级应用方向,为电动汽车电驱系统安全提供了完整的仿真解决方案。

MHD0815的博客 961

【ES6】var、let、const三者的区别

首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? ECMAScript是一个国际通过的标准化脚本语言。JavaScript由ECMAScript和DOM、BOM三者组成。可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。 2011 年,ECMAScri...

joker 9万+

NVMe-MI 协议解析:带外管理框架与实现原理

本文深入解析了NVMe-MI协议,这是一种用于NVMe固态硬盘的标准化带外管理接口。文章详细阐述了其独立于操作系统的管理框架,通过MCTP协议栈实现,支持SMBus/I2C、PCIe VDM和I3C等物理层,从而在系统故障时仍能可靠地进行健康监控、固件升级等关键运维操作,是现代数据中心存储管理的核心基础设施。

lll78的博客 961

ES6新特性详解:var、let、const的区别

varconst用于定义常量const声明的变量必须在声明时初始化(即必须赋值),且其值在之后的代码中不能被重新赋值。// 正确// 抛出 SyntaxError: Missing initializer in const declaration// 抛出 TypeError: Assignment to constant variable.const定义的对象属性值可以改变:尽管const保证变量的引用不变,但如果变量是一个对象,其属性值是可以改变的。age: 10。

weixin_66708577的博客 1440

Win11安装Office2021

windows11安装office2021。

1万+

WKWebView 白屏问题,WKWebView request body丢失问题

1,WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会...

weixin_37543822的博客 736

ES6回顾之let、var、const区别

var命令声明的,在全局范围内都有效 var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined let声明的变量只在它所在的代码块有效 let命令它所声明的变量一定要在声明后使用,否则报错。在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区” 只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区...

沛沛呀、 436

【BUAA】【计组】计算机组成 pre (含详细解析)

BUAA 计算机组成 本文章旨在为@走肖暂时无法接通的系列文章创造一个目录,收藏本文章,方便查阅! 1. 入门测试 2. 基础知识 3. Logisim   欢迎来到 Logisim 的世界   Logisim 门电路   Logisim 组合电路   Logisim 时序电路   Logisim 仿真与调试   应用与挑战 4. Verilog 与仿真工具   前言   ISE 入门   VCS 入门   Verilog 语法   Verilog 题目实例与分析   Verilog 工程的设计开发调试

Schrodinger007的博客 9809

一文读懂ES6 中 var、let、const 的区别

ES6 中 var、let、const 的区别一、提出的时间早晚二、是否可以变量提升三、是否允许重复定义变量四、const一旦声明变量,则此变量就不能修改五、全局作用域和函数作用域 一、提出的时间早晚 var提出的时间较早,是ES5就出现的,而let和const则稍微晚点,是ES6出现的。 二、是否可以变量提升 var 可以变量提升,如: console.log(a) //undefined var a = 1; a已经声明,但还没被赋值,默认得到的是 undefined 。 而 let、const

qq_40137978的博客 1万+

避坑指南:汇川SV660N配合SOEM时,PDO映射与CiA402状态机那些容易出错的地方

本文深入解析汇川SV660N伺服驱动与SOEM主站在PDO动态映射和CiA402状态机切换中的常见问题,提供实战代码和调试技巧。重点解决PDO配置时序、状态机转换同步等关键难点,帮助工程师避免典型错误,实现稳定通信与控制。

weixin_30653023的博客 498

SAP BOM反查(可追溯值至顶级)

功能介绍:BOM层数在7层以内的(含7层)的物料,执行后都可以查询到顶级的BOM,逻辑很简单,后期如BOM层数增加,可自行增加查询逻辑。 *&---------------------------------------------------------------------* *& Report ZBOM_CHECK *&---------------------...

SAP阿狸 6060

ES6——let、const和var的用法和区别

ES6—let、const和var的区别 ES6 新增了let命令,用来声明变量,新增了const命令,用来声明常量,它的用法类似于var。 let a = 1; var b = 2; const PI = 3.14; 主要区别 块级作用域 //let声明的变量和const声明的常量有块级作用域,var声明的变量则只有函数作用域 { let a = 1; const PI = 3.14; ...

瓜冬瓜的博客 1416

海康visionmaster开发笔记10-集成HALCON第三方算子到VM工具箱的方法

海康visionmaster开发笔记10-HALCON第三方算子到VM工具箱的方法

视觉人机器视觉的博客 4347

ES6 中 let、var 和 const 的区别详解

在JavaScript的发展历程中,ES6(ECMAScript 2015)的发布标志着语言的重大进步。ES6引入了许多新特性,其中最重要的变化之一就是对变量声明关键字的改进。

Cwayhome的博客 1010

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ES6中var、let、const的三种特性和区别

ES6中的Let、const与var的区别和特性 一、用于声明变量的Let关键字 1.let关键字与var的作用区别 let在代码中有了块级作用域,其中一个大括号就代表一个块。 块级作用域是什么的,就是只能在当前块中使用,出了这个快级作用域就会失效 其中非常常见的比如一个 if判断或者 for循环 先说if判断 如以下代码 if(true){ //此为块级作用域内 let a = 10; ...

dd_liumou的博客 1007

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ES6中let和const关键字与var关键字之间的区别

希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。的块级作用域,可以帮助我们编写更清晰、更少副作用的代码,减少命名冲突的可能性。声明的变量在其所在的函数内部有效,如果是在全局范围内声明,则该变量在整个程序中都可用。之间的区别,并能够在自己的项目中合理运用这些关键字,写出更加优雅、高效的代码。带来了许多好处,但在某些特定的情况下,如性能敏感的应用,可能还需要考虑使用。的区别,帮助读者理解其背后的作用机制,以及在实际开发中的最佳实践。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1355

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

es6中let var const 的特点及区别

首先,var是定义一个变量常用的方法,与其相似的还有let和const 以下介绍他们三个的特点及不同:一.var var的用法很多,没有什么局限,可以对变量进行声明,例如: 注意:var,let,const 是js的关键词,需要写在script标签中 特点:1

m0_72694993的博客 393

ES5中的var与ES6中的let,const的区别

ES5声明变量的var与ES6里面新增的let,const的区别:ES5中使用var来声明变量,会产生作用域提升的问题;ES5里面不存在块级作用域,只要是在作用域的范围内都能够被访问到。 ES6里面新增的let,let声明过的变量不能在相同作用域内进行重复声明,let声明的变量只能在块级作用域内使用,let相当于严格模式的var,不再存在提升变量的声明问题。let相对于var来说,有暂时性死区。 const声明一个只读常量。一旦声明,常量的值就不能改变。const的作用域与let相同,只在声明所在的块级

xiaomuxue_的博客 2839

【ES6】中var、let、const的区别

一、 块级作用域{} ES5 中作用域有:全局作用域、函数作用域。 ES6 中新增了块级作用域 块级作用域由{ }包括。if语句和for语句里面的{ }也属于块级作用域 { var a = 1; console.log(a); // 1 } console.log(a); // 1 通过var定义的变量可以跨块作用域访问到 (function A() { var b = 2; console.log(b); // 2

shj125的博客 616

ES6:var 、const、let的使用和区别

介绍了ES6中var、const、let的使用和区别

无面人的博客 665

ES6篇——var、let、const区别

es6主要新增了const和let,用来声明变量。但是let和const还是有一些不同的细节。 1.var、let、const的属性区别: 声明 变量提升 作用域 初始值 重复声明 var 是 函数级 不需要 允许 let 否 块级

h907310116的博客 4356

【ES6】让你彻底搞懂const ,let和var的区别

前言想必许多学习JS的同学都被const、let和var搞得晕头转向,一直傻傻分不清这三者的区别,本文将全面阐述清这三者的前世今生。首先,说到JS就不得不提到他的好兄弟ECMAScript,ECMAScript是一个国际通过的标准化脚本语言。JavaScript由ECMAScript和DOM、BOM三者组成。可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。

2301_76507228的博客 1156

【js知识】const定义变量时的{} & 【ES6】中var、let、const的区别

const定义变量时的{} & 【ES6】中var、let、const的区别 一、const定义变量时的{} 1、解构 从数组和对象中提取值,对变量进行赋值 解构的语法: const { zhi } = Gao; //等价于 const zhi = Gao.zhi 2、{} 所代表的的意思 1 const {a} = {a:1} console.log(a) // 1 2-es6语法糖 const {a} = {a:1, b:2}; console.log(a); //1

weixin_44867717的博客 6487

【ES6】var和let/const的区别

1. var声明的变量会挂载在window上,而let和const声明的变量不会 let / const允许把变量的作用域限制在块级域中;var 申明变量要么是全局的,挂载在window上,要么是函数级的,限制在函数作用域内,而无法是块级的。 function fn(){ var username = '1'; console.log(username); } fn(); console.log(username); // 报错 变量存在函数作用域内。 2. var声明变量存在变量提升

默默的小跟班的博客 947

ES6语法let、const与var的区别-总结

ES6之let、const与var的区别 命令 作用域 是否变量提升 可否多次声明 let与const的区别 var 函数作用域 是 可 ------ let 块级作用域 否(存在暂时性死区TDZ) 不可 ------ const 块级作用域 否(存在暂时性死区TDZ) 不可 const定义变量不能修改(即用于定义常量);const定义变量的同时必须赋值,不能先定义后赋值,...

qq_38062965的博客 332

ES6 let var const 【详解】【区别】

为什么使用 ES6 ? 每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。 变量提升特性增加了程序运行时的不可预测性 语法过于松散,实现相同的功能,不同的人可能会写出不同的代码 ES6新增变量声明: let :ES6中新增了用于声明变量的关键字; 作用域:let声明的变量只在所处于的块级有效; if (true) { let a = 10; } console.log(a) // 此时会报错 a is not defined (作用域

egg_er的博客 381
上一篇: css样式重置
JSON_JSJ
博客等级 码龄5年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_JSJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值