ES6-let命令
2024-09-03 08:20:38
let命令
用于声明变量,但是声明的变量只能在let命令所在的代码块内有效,
{
let a = 10;
var b = 1;
}
其中,a在代码块的外部是调用不到的。对于for循环的计数器里面,就很适合let命令。
不存在变量声明
let不像var一样有变量声明,所以变量一定要在声明后使用。暂时性死区
只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外境影响。var tmp = 123;
if(ture){
tmp = "axs";//error
let tmp;
}
在代码内,使用let命令声明变量之前,该变量都是不可用的。这在语法上称为“暂时性死区”。es6这样规定,主要是为了减少运行时错误,防止在变量声明前使用这个变量,从而导致意料之外的行为。暂时性死区的本质就是,只要进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用变量。
不允许重复声明
let不允许在相同的作用域内重复声明同一个变量。
块级作用域
es5只有全局作用域和函数作用域,没有块级作用域,这带来了很多不合理的场景。如:内层变量可能会覆盖外层变量;用来计数的循环变量会泄露为全局变量。
function fl(){
let n = 5;
if(ture){
let n = 10;
}
console.log(n);//5
}
如果使用var,则会输出10。除此之外,es6还允许块级作用域任意嵌套。
const命令
const用来声明常量,一旦声明,他的值就不可以改变。而且,一旦声明,就必须立即被初始化,不能留到后面去赋值。他的作用域也只能在声明所在的块级作用域内有效。没有变量提升,同样存在暂时性死区,只能在声明后使用。
补充:跨模块常量:采用下面下法:
export const A=1
最新文章
- 学会使用Spring注解
- localhost访问错误Forbidden You don't have permission to access / on this server.解决办法(亲测)
- 使用mysql管理meta
- socket编程中客户端常用函数 以及简单实现
- [转]ASP.NET 成员资格 Part.1(API)
- kafka producer源码
- Identifier 'Logic.DomainObjectBase._isNew' is not CLS-compliant
- ArcGIS Runtime for Android 使用异步GP服务绘制等值线
- There are no interfaces on which a capture can be done.
- 不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签
- python 零散记录(六) callable 函数参数 作用域 递归
- TComboBox组件的重要属性
- 使用jodconverter和swftools实现文件在线预览
- Mojo Mysql utf-8字符集 需要{mysql_enable_utf8 =>; 1}
- 《Windows驱动开发技术详解》之派遣函数
- 常见.NET功能代码汇总 (3)
- GraphQL
- echart的x换行
- ganglia监控架构
- zzzp0371 属于本人