当前位置: 首页 > news >正文

ES6 let const var和解构赋值

1.let/const和var的区别

1.变量提升:var会发生变量提升,let和const不存在变量提升

2.暂时性死区:变量声明之前变量不可用称为暂时性死区。var不存在,let和const存在暂时性死区

3.typeof 不再是百分百不会报错:let声明前不能使用typeof

        typeof x; // Uncaught ReferenceError: Cannot access 'x' before initializationlet x;

4.不允许重复声明:var重复声明会覆盖前一个,let和const不允许重复声明(用var声明过的也不允许let和const声明)

5.函数内部:var声明过的也不允许let和const声明,有形参后,不能再使用let声明

// 函数内部
function get(){var b =1;let b =6;
}function get(b){let b 
}

2.块级作用域

1. 为什么要有块级作用域?

ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景

第一种场景,内层变量可能会覆盖外层变量。

var tmp = new Date();
function f() {
console.log(tmp);if (false) {var tmp = 'hello world';}}
f(); // undefined

第二种场景,用来计数的循环变量泄露为全局变量for (var i = 0; i < s.length; i++){}

2. 特点:允许块级作用域的任意嵌套,里面可以访问外面的,外面不可以访问里面的

每一层都是一个单独的作用域。每一层中的数据是不互通的。(里面可以访问外面的,外面不可以访问里面的)

{{let a = 123;}console.log(a) // 報錯
}// 里面可以访问外层的a
{{let a = 123;{console.log(a)}}}

3. 对比es5之前的代码块:需要使用匿名函数进行嵌套

 let a = '全局';{let a = '局部'console.log(a);}console.log(a);var aa = '全局';(function(){var aa = '局部'console.log(aa);})()console.log(aa);

3.const特殊的地方

1. const声明一个只读的常量。一旦声明,常量的值就不能改变

2. const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值

3.内存地址不变 里面的东西可以边

const foo = {};
// 为 foo 添加一个属性,可以成功foo.prop = 123;
foo.prop // 123
// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only

4.如果真的想将对象冻结,应该使用Object.freeze方法。const不能真正冻结对象

常量foo指向一个冻结的对象,所以添加新属性不起作用,严格模式时还会报错。

const foo = Object.freeze({});
// 常规模式时,下面一行不起作用;// 严格模式时,该行会报错
foo.prop = 123;
'use strict';
const foo = Object.freeze({});
foo.prop = 123; // 報錯

5.for循环内使用let变量。

for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。

这种for循环和循环体内使用的是用一个变量,所以最后输出的是6

var a = [];
for (let i = 0; i < 10; i++) {a[i] = function () {console.log(i);};}
a[6](); // 6

以下这种,for循环和循环体内都由单独的作用域变量,所以每次输出的都是自己作用域的变量‘abc’ 

for (let i = 0; i < 3; i++) {let i = 'abc';console.log(i);
}
// abc// abc// abc

相关文章:

ES6 let const var和解构赋值

1.let/const和var的区别 1.变量提升&#xff1a;var会发生变量提升&#xff0c;let和const不存在变量提升 2.暂时性死区&#xff1a;变量声明之前变量不可用称为暂时性死区。var不存在&#xff0c;let和const存在暂时性死区 3.typeof 不再是百分百不会报错&#xff1a;let声…...

03、MySQL-------数据库中间件MyCat实现读写分离

目录 八、数据库中间件MyCat实现读写分离1、克隆&#xff1a;2、配置分析&#xff1a;1、schema.xml2、启动mycat&#xff1a;3、关闭防火墙&#xff1a;4、代码测试&#xff1a;测试写入&#xff1a;测试读&#xff1a;强制读Master 八、数据库中间件MyCat实现读写分离 作用&…...

虹科活动 | 探索全新AR应用时代,虹科AR VIP研讨会广州场回顾!

文章来源&#xff1a;虹科数字化AR 阅读原文&#xff1a;https://mp.weixin.qq.com/s/7tmYR42Tw5XLn70fm8Nnew 主题演讲 本次研讨会&#xff0c;虹科特邀 “工业AR鼻祖” 美国Vuzix公司的首席应用工程师郑慎方先生进行主题演讲&#xff0c;并邀请到了各界的专业人士和企业代表参…...

非科班,补基础

大家好&#xff0c;我是大彬~ 今天跟大家分享知识星球小伙伴关于【非科班转码如何补基础】的提问。 往期星球提问整理&#xff1a; 读博&#xff1f;找工作&#xff1f; 性格测试真的很重要 想找一份实习工作&#xff0c;需要准备什么 球友提问&#xff1a; 大彬大佬&#xf…...

安全性与合规性:IT运维的双重守护

在当今数字化时代&#xff0c;信息技术&#xff08;IT&#xff09;已深入渗透到企业的各个层面。随着数据和技术的不断发展&#xff0c;IT运维安全性和合规性逐渐成为了企业运营的两大核心要素。它们不仅保障了企业数据的安全&#xff0c;更维护了公司的声誉和客户信任。本文将…...

session 反序列化

原理详解 ctfshow web 263 ctfshow 新手杯 剪刀石头布 这里我们可以发现服务器使用的处理器为php_serialize&#xff0c;与当前页面处理器不同&#xff0c;在反序列化的时候会造成一些问题。同时cleanup配置没开&#xff0c;关闭了session自动清理&#xff0c;所以我们不需要…...

PostgreSQL中实现数学中的组合问题

记得在学《数值分析》这门课程时,其中有排列组合的相关计算。最近没有想到,自己居然在编程上需要了这个问题,需要在数据库的一张表中,找出任意n条记录的组合,判断组合后的图形是什么,也就是组合问题。从网上搜索的相关资料,发现很多是在Java或者python代码实现的。因为数…...

编译和连接

前言&#xff1a;哈喽小伙伴们&#xff0c;从我们开始学习C语言到实现如今的成果&#xff0c;可以说我们对C语言的掌握已经算是精通级别了&#xff0c;但是我们只学习了怎么写代码&#xff0c;却没怎么了解过代码的背后是怎么工作的。 那么今天这篇文章我们一起来学习C语言的最…...

常见分布整理

概率论 - 常见分布&#xff08;及其分布表&#xff09; 常见分布的期望和方差 离散型分布 两点分布 有2种结果&#xff0c;实验只做1次 X~b(1,p)则有 P(X k) pk (1-p)1-k,k 0, 1 数学期望&#xff1a;E(X) p 方差&#xff1a;D(X)p(1-p) 二项分布 P(A) p&#xff0…...

ubuntu终端命令行下如何使用NetworkManager(netplan)来配置wifi网络

最近在给家里折腾一个文件共享服务器给家里的小米摄像头保存监控视频用。树莓派太贵了&#xff0c;找来找去发现香橙派orangepi zero3 是最低成本的替代解决方案&#xff08;网络足够快&#xff0c;CPU的IO能力足够强&#xff09;&#xff0c;香橙派orangepi zero3的操作系统是…...

GO学习之 goroutine的调度原理

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...

CUDA学习笔记5——CUDA程序错误检测

CUDA程序错误检测 所有CUDA的API函数都有一个类型为cudaError_t的返回值&#xff0c;代表了一种错误信息&#xff1b;只有返回cudaSuccess时&#xff0c;才是成功调用。 cudaGetLastError()用来检测核函数的执行是否出错cudaGetErrorString()输出错误信息 #include <stdi…...

虹科 | 解决方案 | 机械免拆压力测试方案

对于发动机的气门卡滞或气门开闭时刻错误、活塞环磨损、喷油嘴泄漏/堵塞等故障&#xff0c;往往需要解体发动机或拆卸部件才能发现&#xff1b;而对于某些轻微的故障&#xff0c;即使解体了发动机后也经常难于肉眼判别 虹科Pico提供的WPS500压力测试方案&#xff0c;可以动态测…...

Python数据挖掘实用案例——自动售货机销售数据分析与应用

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…...

深度学习技巧应用29-软件设计模式与神经网络巧妙结合,如何快速记忆软件设计模式

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下软件设计模式与神经网络巧妙结合&#xff0c;如何快速记忆软件设计模式。我们知道软件设计模式有23种&#xff0c;考试的时候经常会考到&#xff0c;但是这么种里面我们如何取判断它呢&#xff0c;如何去记忆它呢&a…...

中文编程开发语言工具应用案例:ps5体验馆计时收费管理系统软件

中文编程开发语言工具应用案例&#xff1a;ps5体验馆计时收费管理系统软件 软件部分功能&#xff1a; 1、计时计费功能&#xff1a;只需点开始计时即可&#xff0c;时间直观显示 2、商品管理功能&#xff1a;可以管理饮料等商品 3、会员管理功能&#xff1a;支持只用手机号作…...

绘制核密度估计图

简介 核密度估计图&#xff08;Kernel Density Estimation&#xff0c;KDE&#xff09;是一种用于估计数据分布的非参数方法&#xff0c;通常用于可视化和理解数据的分布情况。它通过平滑地估计数据的概率密度函数&#xff08;PDF&#xff09;来显示数据的分布特征&#xff0c…...

基于深度学习网络的蔬菜水果种类识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1数据集准备 4.2构建深度学习模型 4.3模型训练 4.4模型评估 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 clc; clear; close all; wa…...

UE4 距离场

在项目设置的渲染模块可打开距离场 把该节点连上&#xff0c;该节点的意思是&#xff0c;距离表面越近&#xff0c;材质显示值为0 不接近表面时&#xff1a; 接近表面时 可勾选该值即可看到距离场具体效果&#xff1a; 未接触表面时&#xff1a; 接触表面时&#xff1a; 产生…...

【SA8295P 源码分析 (四)】26 - QNX Ethernet MAC 驱动 之 emac_rx_thread_handler 数据接收线程 源码分析

【SA8295P 源码分析】26 - QNX Ethernet MAC 驱动 之 emac_rx_thread_handler 数据接收线程 源码分析 一、emac_rx_thread_handler():通过POLL 轮询方式获取数据二、emac_rx_poll_mq():调用 pdata->clean_rx() 来处理消息三、emac_configure_rx_fun_ptr():配置 pdata->…...

基于NVIDIA Nemotron构建安全语音问答助手的全栈实践

1. 从零构建具备安全防护的语音问答助手&#xff1a;基于NVIDIA Nemotron的全栈实践去年CES展会上NVIDIA发布的Nemotron模型家族&#xff0c;为我们构建下一代智能助手提供了全新可能。不同于简单的API调用&#xff0c;真正的智能助手需要将语音识别、多模态检索、安全过滤和长…...

芯片安全启动全解析:从eFuse到Secure Boot

芯片eFuse深度解析+安全启动(Secure Boot)原理+代码级实现详解 前言 在嵌入式、SOC芯片设计、物联网安全领域,eFuse 和 Secure Boot 是绕不开的核心技术。eFuse作为芯片级一次性可编程存储器,是硬件安全的根信任载体;Secure Boot则是基于eFuse构建的启动链验证体系,从根…...

告别信号模糊:手把手教你理解PCIe 3.0的动态均衡(含FIR滤波器与CTLE/DFE详解)

告别信号模糊&#xff1a;手把手教你理解PCIe 3.0的动态均衡&#xff08;含FIR滤波器与CTLE/DFE详解&#xff09; 当你第一次在示波器上看到PCIe 3.0信号的眼图时&#xff0c;可能会被那些模糊的"眼睛"吓到——本该清晰的交叉点变成了毛茸茸的线条&#xff0c;高低电…...

Bilibili视频转文字神器:3步实现高效智能的文字提取方案

Bilibili视频转文字神器&#xff1a;3步实现高效智能的文字提取方案 【免费下载链接】bili2text Bilibili视频转文字&#xff0c;一步到位&#xff0c;输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text bili2text是一个专业的Bilibili视频转文字…...

Rust 泛型系统的底层逻辑

Rust泛型系统的底层逻辑探秘 Rust的泛型系统是其强大类型安全的核心支柱之一&#xff0c;它不仅让代码更灵活&#xff0c;还能在编译期消除性能开销。其底层逻辑融合了类型理论、编译优化和零成本抽象思想&#xff0c;为开发者提供了高效且安全的编程体验。本文将深入剖析Rust…...

OpenAI Assistants API:托管式 Harness 的利弊

OpenAI Assistants API&#xff1a;托管式 Harness 的利弊 副标题&#xff1a;解放开发者双手的同时&#xff0c;如何拿捏个性化与控制权的平衡点第一部分&#xff1a;引言与基础 1. 引人注目的标题&#xff08;重述核心定位版&#xff09; 托管式AI Agent开发利器的双刃剑&…...

STM32F103C6T6 PWM+DMA驱动WS2812B全彩LED:固件库实战避坑指南

STM32F103C6T6 PWMDMA驱动WS2812B全彩LED&#xff1a;固件库实战避坑指南 在智能家居和氛围照明项目中&#xff0c;WS2812B全彩LED因其集成驱动芯片和单线控制特性广受欢迎。然而&#xff0c;许多开发者在使用STM32驱动这类LED时&#xff0c;常被其严格的时序要求所困扰。本文将…...

每日极客日报 · 2026年04月23日

每日极客日报 2026年04月23日 今日精选 20 条 IT 科技热点&#xff0c;覆盖 AI 大模型、开源工具、工程实践、安全漏洞与业界动态等领域。 &#x1f525; 今日头条 Zed 编辑器推出"并行代理"功能&#xff0c;多 Agent 同窗协作成现实 高性能代码编辑器 Zed 今日正…...

告别AT指令!用Arduino IDE和ESP8266库,5分钟搞定OneNET数据上传

5分钟极简开发&#xff1a;用Arduino IDE实现ESP8266与OneNET的无缝对接 第一次接触物联网开发时&#xff0c;我被各种AT指令折磨得够呛——每次修改参数都要重新发送一长串命令&#xff0c;调试过程像在走钢丝。直到发现Arduino IDE配合ESP8266库的"魔法"&#xff0…...

Pandas入门别再死记硬背了!用这8个实战小关卡,手把手带你玩转Series和DataFrame

Pandas通关秘籍&#xff1a;8个趣味关卡带你玩转数据处理 第一次接触Pandas时&#xff0c;我被那些晦涩的术语和复杂的操作搞得晕头转向。直到有一天&#xff0c;我把DataFrame想象成Excel表格的代码版&#xff0c;Series当作带标签的购物清单&#xff0c;一切突然变得清晰起来…...