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.变量提升:var会发生变量提升,let和const不存在变量提升 2.暂时性死区:变量声明之前变量不可用称为暂时性死区。var不存在,let和const存在暂时性死区 3.typeof 不再是百分百不会报错:let声…...
03、MySQL-------数据库中间件MyCat实现读写分离
目录 八、数据库中间件MyCat实现读写分离1、克隆:2、配置分析:1、schema.xml2、启动mycat:3、关闭防火墙:4、代码测试:测试写入:测试读:强制读Master 八、数据库中间件MyCat实现读写分离 作用&…...
虹科活动 | 探索全新AR应用时代,虹科AR VIP研讨会广州场回顾!
文章来源:虹科数字化AR 阅读原文:https://mp.weixin.qq.com/s/7tmYR42Tw5XLn70fm8Nnew 主题演讲 本次研讨会,虹科特邀 “工业AR鼻祖” 美国Vuzix公司的首席应用工程师郑慎方先生进行主题演讲,并邀请到了各界的专业人士和企业代表参…...
非科班,补基础
大家好,我是大彬~ 今天跟大家分享知识星球小伙伴关于【非科班转码如何补基础】的提问。 往期星球提问整理: 读博?找工作? 性格测试真的很重要 想找一份实习工作,需要准备什么 球友提问: 大彬大佬…...
安全性与合规性:IT运维的双重守护
在当今数字化时代,信息技术(IT)已深入渗透到企业的各个层面。随着数据和技术的不断发展,IT运维安全性和合规性逐渐成为了企业运营的两大核心要素。它们不仅保障了企业数据的安全,更维护了公司的声誉和客户信任。本文将…...
session 反序列化
原理详解 ctfshow web 263 ctfshow 新手杯 剪刀石头布 这里我们可以发现服务器使用的处理器为php_serialize,与当前页面处理器不同,在反序列化的时候会造成一些问题。同时cleanup配置没开,关闭了session自动清理,所以我们不需要…...
PostgreSQL中实现数学中的组合问题
记得在学《数值分析》这门课程时,其中有排列组合的相关计算。最近没有想到,自己居然在编程上需要了这个问题,需要在数据库的一张表中,找出任意n条记录的组合,判断组合后的图形是什么,也就是组合问题。从网上搜索的相关资料,发现很多是在Java或者python代码实现的。因为数…...
编译和连接
前言:哈喽小伙伴们,从我们开始学习C语言到实现如今的成果,可以说我们对C语言的掌握已经算是精通级别了,但是我们只学习了怎么写代码,却没怎么了解过代码的背后是怎么工作的。 那么今天这篇文章我们一起来学习C语言的最…...
常见分布整理
概率论 - 常见分布(及其分布表) 常见分布的期望和方差 离散型分布 两点分布 有2种结果,实验只做1次 X~b(1,p)则有 P(X k) pk (1-p)1-k,k 0, 1 数学期望:E(X) p 方差:D(X)p(1-p) 二项分布 P(A) p࿰…...
ubuntu终端命令行下如何使用NetworkManager(netplan)来配置wifi网络
最近在给家里折腾一个文件共享服务器给家里的小米摄像头保存监控视频用。树莓派太贵了,找来找去发现香橙派orangepi zero3 是最低成本的替代解决方案(网络足够快,CPU的IO能力足够强),香橙派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的返回值,代表了一种错误信息;只有返回cudaSuccess时,才是成功调用。 cudaGetLastError()用来检测核函数的执行是否出错cudaGetErrorString()输出错误信息 #include <stdi…...
虹科 | 解决方案 | 机械免拆压力测试方案
对于发动机的气门卡滞或气门开闭时刻错误、活塞环磨损、喷油嘴泄漏/堵塞等故障,往往需要解体发动机或拆卸部件才能发现;而对于某些轻微的故障,即使解体了发动机后也经常难于肉眼判别 虹科Pico提供的WPS500压力测试方案,可以动态测…...
Python数据挖掘实用案例——自动售货机销售数据分析与应用
🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…...
深度学习技巧应用29-软件设计模式与神经网络巧妙结合,如何快速记忆软件设计模式
大家好,我是微学AI,今天给大家介绍一下软件设计模式与神经网络巧妙结合,如何快速记忆软件设计模式。我们知道软件设计模式有23种,考试的时候经常会考到,但是这么种里面我们如何取判断它呢,如何去记忆它呢&a…...
中文编程开发语言工具应用案例:ps5体验馆计时收费管理系统软件
中文编程开发语言工具应用案例:ps5体验馆计时收费管理系统软件 软件部分功能: 1、计时计费功能:只需点开始计时即可,时间直观显示 2、商品管理功能:可以管理饮料等商品 3、会员管理功能:支持只用手机号作…...
绘制核密度估计图
简介 核密度估计图(Kernel Density Estimation,KDE)是一种用于估计数据分布的非参数方法,通常用于可视化和理解数据的分布情况。它通过平滑地估计数据的概率密度函数(PDF)来显示数据的分布特征,…...
基于深度学习网络的蔬菜水果种类识别算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1数据集准备 4.2构建深度学习模型 4.3模型训练 4.4模型评估 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 clc; clear; close all; wa…...
UE4 距离场
在项目设置的渲染模块可打开距离场 把该节点连上,该节点的意思是,距离表面越近,材质显示值为0 不接近表面时: 接近表面时 可勾选该值即可看到距离场具体效果: 未接触表面时: 接触表面时: 产生…...
【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->…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
