深入浅出ES6之let和const命令
作者:mrr 时间:2024-05-22 10:37:21
let和const声明的变量只在代码块内有效
{
let a = 10;
var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
不存在变量提升
变量一定要在声明后使用,否则报错
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
不允许重复声明
// 报错
function () {
let a = 10;
var a = 1;
}
块级作用域
function f() { console.log('I am outside!'); }
(function () {
if(false) {
// 重复声明一次函数f
function f() { console.log('I am inside!'); }
}
f();
}());
//I am inside! ES5 函数提升
//I am outside! ES6 块级作用域
const命令
声明一个只读的常量,一旦声明,常量的值就不能改变
一旦声明变量,就必须立即初始化,不能留到以后赋值
let命令、const命令、class命令声明的全局变量,不属于全局对象的属性
var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1
let b = 1;
window.b // undefined
下面再单独给大家介绍ES6之const命令
一直以来以ecma为核心的js始终没有常量的概念,es6则弥补了这一个缺陷;
const foo='foo';
foo='bar';//TypeError: Assignment to constant variable.
上例声明了一个基本类型的常量,如过试图修改初始值则会报错;如果是引用类型的值同样适用,但是有一点需要注意,举例说明:
const foo=[];
foo=[1];//Assignment to constant variable.
正常报错,没毛病,再看:
const foo=[1,2,3];
foo[1]=4;
console.log(foo)//[1, 4, 3]
这怎么没报错?而且还能修改成功? 这两个例子不一样的地方在于前者是修改了指针(需熟悉js 引用类型)对应的内容改变了,后者则不是指向依然没变 但是指向对象的内容发生改变了,对于foo而言我只是一个指针负责指向对应的对象 至于对象内容是什么就不管我的事了所以可以修改;如果不想让内容也改变也行使用另一个方法;
const foo=Object.freeze([1,2,3]);
foo[1]=4;
console.log(foo)//[1, 2, 3]
这样就不用担心被修改了;
标签:es6,let,const
0
投稿
猜你喜欢
详细分析mysql MDL元数据锁
2024-01-28 18:29:10
TensorFlow人工智能学习创建数据实现示例详解
2022-04-20 12:58:27
如何用ASP.NET连接MS SQLServer数据库?
2010-06-11 19:27:00
Python从零开始创建区块链
2021-02-12 12:21:14
MySQL身份认证漏洞 升级到5.5.24可修正
2012-07-11 15:54:09
python从入门到实践之字典
2023-05-11 22:20:17
手把手教你实现Python连接数据库并快速取数的工具
2024-01-27 12:28:09
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2023-10-16 15:47:32
Python3.7 新特性之dataclass装饰器
2021-05-11 13:13:40
python数据处理 根据颜色对图片进行分类的方法
2022-02-27 08:41:37
分组后分组合计以及总计SQL语句(稍微整理了一下)
2024-01-26 23:10:51
MySQL创建用户和权限管理的方法
2024-01-21 12:08:58
Golang 利用反射对结构体优雅排序的操作方法
2024-05-10 13:56:42
详解vue-cli 脚手架 安装
2024-05-09 10:40:06
Python如何使用27行代码绘制星星图
2024-01-02 10:41:44
详解MySQL中的缓冲池(buffer pool)
2024-01-26 01:05:53
返回首页的链接地址写法
2008-10-22 13:38:00
JavaScript检测实例属性, 原型属性
2024-04-18 09:40:54
Python 实现Serial 与STM32J进行串口通讯
2021-03-05 16:01:33
python语言中有算法吗
2022-06-22 12:42:15