ES6 中的 let 和 const
来源:互联网 发布:淘宝自制美白面膜 编辑:程序博客网 时间:2024/05/17 02:34
以前我们在定义变量时用的是 var ,而es6 又给我们提供了两种方法 let 和 const (const 是定义常量的)。今天我就来总结一下let 和const 。比较简单,大神么鸟我。
一、let 定义变量。
我们使用let定义的变量和 es5 中 var 定义的变量具有一下区别。
1. let定义的变量具块儿级有作用域
什么是块儿级作用域,就像 {}
花括号内的,为块儿级作用域。所以let 在块级作用域内声明后,块儿级作用域外面是访问不到的。
function a(){ let b = 10; console.log(b) //10 可以方问}a();console.log(b); //报错 Uncaught ReferenceError: b is not defined
而如果我们将上面的 let 改为 var声明变量是不会出现报错的。这个let 声明的变量很好的解决了我们以前的闭包问题。 闭包问题不懂的可以看看我以前文章http://blog.csdn.net/webxiaoma/article/details/53213113
我们如果用var 声明变量会产生以下情况
function a(){ var b = 10; function c(){ b++; console.log(b) } return c; } d = a(); d(); // 11 d(); // 12
这是应为 当变量d 引用 函数c时 形成了闭包。变量b 在被引用后不会立即回收,而是存储起来了。所以每次执行d(); b变量都会累计加一,有时候我们需要改变这种情况,以前我们会这么做。
function a(){ var b = 10; (function c(){ b++; console.log(b) })()}a(); // 11a(); // 11
其实现在我们完全可以用es6的let去这么写
function a(){ let b = 10; // 只需要将我们第一次的代码的 var 改为 let即可。 function c(){ b++; console.log(b) } return c; } d = a(); d(); // 11 d(); // 11
2. let定义的变量不会被提升。
let 声明的变量是不会被提升的。例如在es5中我们这样做。
console.log(a) //结果 underfindvar a = 5;
浏览器并不会报错而是 underfind,这是因为变量a 被提升了,不知道变量提升 原则的可以看看我以前的文章:http://blog.csdn.net/webxiaoma/article/details/52431203
而我们用let声明的变量 这样写浏览器会直接报错
console.log(a) //Uncaught ReferenceError: a is not defined let a = 5;
3. let定义的变量不能够被覆盖,但是值可以被修改。
let声明的变量不可以被修改,例如:
let a = 5; let a =6; console.log(a) //报错 'a' has already been declared
而如果是用var 去声明的变量,会直接覆盖掉a以前的值。虽然let声明的变量不可以被修改,但是我们可以更改它的值
例如:
let a = 5;a =6;console.log(a) // 结果 6;
一、const 定义常量。
1.什么是常量,常量在es6 中是不能被修改的。
const声明的常量 同样具有let
的上述三个特点。唯一不同的是,let声明的变量,变量指针是不能被修改的,但是指针所指的地址的值是可以被修改的,而const声明的常量,是都不可以被修改的,否则浏览器会错。
const a = 5; a =6; console.log(a) //报错 Assignment to constant variable.
上边代码运行会报错,而let和var声明的变量是不会报错的。
es6的这些写法,对我个人来说感觉还是挺好的,方便,对我们写代码也去起到一定的规范作用。
- ES6 中的 let 和 const
- es6中的const和let
- ES6中的let const
- 【ES6】let和const
- es6 let和const
- ES6-let和const
- es6 let和const
- 【ES6系列】let和const
- ES6学习-let和const
- es6 let 和 const 命令
- ES6的let和const
- ES6 let和const命令
- es6浅学-let和const
- ES6中的变量 let 和const的区别
- JavaScript ES6中的var、let、const
- 深入浅出ES6(十四):let和const
- ES6学习--let和const命令
- 《ES6入门》let和const总结
- 【英语】China, A Global View
- C#bat程序不支持中文路径
- 欢迎使用CSDN-markdown编辑器
- BZOJ2734 [HNOI2012]集合选数
- 杂谈: MVC/MVP/MVVM
- ES6 中的 let 和 const
- git与github区别与简介
- VS Code 版本控制
- test1
- 《大话设计模式》备忘笔记-UML类图图示
- Arduino MQTT 搭建物联网可视化温度实时监测
- 学习需要网址总汇
- SAP最常用的业务流程事务代码
- 【行人识别】Deep Transfer Learning for Person Re-identification