ES6阮一峰读书笔记第一章let和const命令

article/2025/8/25 15:22:51

let 和 const 命令

1.let用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
在这里插入图片描述

设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
在这里插入图片描述
2、var 与let声明不同
在使用var时,变量可以先使用后声明,输出值为undefined。
在使用let,变量必须先声明后使用
在这里插入图片描述
3、不允许重复声明
let不允许在相同作用域内,重复声明同一个变量。
在这里插入图片描述
因此,不能在函数内部重新声明参数。
在这里插入图片描述

2、const
基本用法:const声明一个只读的常量。一旦声明,常量的值就不能改变。这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

作用域

1、作用域:作用域就是一个独立的地盘,让变量不会外泄、暴露出去。

好处:作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。作用域是分层的,内层作用域可以访问外层作用域的变量,反之则不行

1、全局作用域包括:
1、最外层函数
2、最外层函数外面定义的变量
3、window对象
注意:块语句(大括号“{}”中间的语句),如 if 和 switch 条件语句或 for 和 while 循环语句,不像函数,它们不会创建一个新的作用域
在这里插入图片描述
2、函数作用域
函数作用域:声明在函数内部的变量,和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部。

3、块级作用域
块级作用域通过新增命令let和const声明,所声明的变量在指定块的作用域外无法被访问。
块级作用域在如下情况被创建:
1、在一个函数内部
2、在一个代码块(由一对花括号包裹)内部

暂时性死区

在存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
在这里插入图片描述

简而言之:在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。


http://chatgpt.dhexx.cn/article/SlEy12oK.shtml

相关文章

ES6阮一峰读书笔记第二章变量的解构赋值

变量的解构赋值 一、数组的解构赋值 从数组和对象中提取值,对变量进行赋值,这被称为解构(即等式右边必须为数组而非undefined,null,NAN) 从本质而言,这种写法也叫做模式匹配,只要左右两边的模式相同&#…

ES6阮一峰读书笔记第三章字符串的拓展

1、字符串的unicode表示 ES6中,可以用"\uxxxx"表示一个字符 "\u0061" // "a"范围:\u0000~\uFFFF,若超出这个范围则必须用双字节来表示 如果超出了字符串的表示范围像("\u20BB7"),系统默…

【ES6】阮一峰ES6学习(六) Proxy

Proxy 1. 前言2. 使用3. Proxy 实例方法1. get()方法2. set()方法3. apply()方法 4. 为什么要存在Proxy?两者对比 1. 前言 es6中全新设计了一个叫Proxy的类型,Proxy这个词的原意是代理,用在这里表示由它来”代理“某些操作,可以译为”代理器…

【ES6】阮一峰ES6学习之Promise(一)

Promise 一、含义1. 概念2. 特点3. 基本用法4. 为什么要用 Promise1. 指定回调函数的方式更加灵活2. 支持链式调用,可以解决回调地狱的问题用Promise实现Ajax 二、Promise的使用1. Promise 构造函数:Promise(executor) {}2. Promise.prototype.then 方法…

rtthread_scons简介

env工具基本构成 命令行环境Cmder: Cmder是一款免费的DOS系统仿真器,体积小巧,界面清爽,支持多标签操作,兼容dos原有的指令。系统配置工具menuconfig: 即linux menuconfig的python实现版本,使用方法与linux menuconfi…

LWIP:RTThread + LWIP

1. 序言 今天跟大家简单分享 LWIP RTThread 的移植注意事项,记得以前刚接触 LWIP 那会,是跟着野火的教程一起走,而大部分 LWIP 移植教程都是以 freeRTOS 为主,本着支持 RTThread 的想法,在当时就想着移植 LWIP 到 RT…

基于rt thread smart构建EtherCAT主站

我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开。rt thread smart的教程可以参考官网资料,这里就不多阐述了。 用的是100ask的imx6ull开发板,雷赛的dm3e-5…

Rtthread线程源码分析

Rtthread线程源码分析 /*** This function will create a thread object and allocate thread object memory* and stack.** param name the name of thread, which shall be unique* param entry the entry function of thread* param parameter the parameter of thread ent…

rtthread套娃移植

和大家分享下将基于rtthread的项目移植到其他平台的经验。 背景 最近做了一个物联网项目移植。原先的项目使用的硬件平台为stm32f401sim800c(mcu 2G modem),软件平台为rtthread 4.0.1。移植到的新平台为BC25(nb modem),软件平台为BC25 opencpu sdk&am…

关于RT thread系统节拍时钟的配置

关于RT thread系统节拍时钟的配置 -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍rt_tick(划重点)。 系统节拍 系统节拍是特定的周期中断,可以…

rtthread学习

RT-Thread 内核实现与应用开发实战指南 1、数据类型rtdef.h 中的数据类型 在裸机系统中,他们统统放在一个叫栈的地方,栈是单片机 RAM 里面一段连续的内存空间,栈的大小一般在启动文件或者链接脚本里面指定, 最后由 C 库函数_m…

Rtthread 内存管理

Rtthread 堆内存管理 #define HEAP_MAGIC 0x1ea0 struct heap_mem {/* magic and used flag */rt_uint16_t magic; //魔数,固定值rt_uint16_t used; //使用标记,1为该内存已经被使用rt_size_t next, prev; //双向链表偏移 }; #define MIN_SIZE 12 //一…

RT-Thread学习

一、入门 RT-Thread官网  官网文档   Rt-thread学习文档  RT-Thread官方bilibili视频号   GD32官网 教你动手移植RT-Thread到国产MCU    如何移植RT-Thread到GD32单片机上(非studio版) 东方青讲RT-Thread  RT-Thread内核入门指南 RT-Thread…

RT Thread之ADC电压读取

官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/adc/adc 一、配置步骤: 1、用cubemx配置底层; 2、cubemx配置好的文件替换之前的配置文件; 3、修改Kconfig文件&…

rtthread mqtt

rtthread 以太网 (LAN8720A) 基于以太网的应用mqtt,在**rtthread 以太网 (LAN8720A)**中已经实现了tcp/ip通信正常,接下需要启用mqtt模块, 嵌入式mqtt设备 rtthread 启用mqtt 在rtthread中田间 pahomqtt 软件包,并右键详细配置…

【RTThread】修改Finsh打印串口波特率

这里需要注意得是一定要在hw_board_init初始化完成之后修改串口波特率。 /* 串口设备句柄 */static rt_device_t uart_device RT_NULL;/* 查找系统中的串口设备 */uart_device rt_device_find("uart1"); // 这里/* 串口配置结构体,使用serial.h的宏定义…

RT Thread之 Uart2 操作

官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/uart/uart 通过前面的学习,基本上RT Thread操作步骤都是,先配置单片机底层,然后再通过应用层映射到底层,最…

rtthread

链表 初始化双向链表 rt_inline void rt_list_init(rt_list_t *l) {l->next l->prev l; }插入 rt_inline void rt_list_insert_after(rt_list_t *l, rt_list_t *n) {l->next->prev n;n->next l->next;l->next n;n->prev l; }在NODE1后面插入节…

RT Thread根据开发板制作BSP方法

之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录。用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thread nano不一样,具体区别见 RT Thread官网&#xf…

rtthread开关中断

1 rtthread开关中断函数(cortex-m) /** rt_base_t rt_hw_interrupt_disable();*/ .global rt_hw_interrupt_disable .type rt_hw_interrupt_disable, %function rt_hw_interrupt_disable:MRS r0, PRIMASKCPSID IBX LR/** void rt_hw_interrupt_enable(rt_base_t le…