var/let/const的共同点:在函数内部都可以访问到在外部通过var/let/const声明的变量或常量。
let:
变量不能重复声明。
let a = 1;
let a = 2;
//报错:Uncaught SyntaxError: Identifier ‘a’ has already been declared
块级作用域。在if-else语句、while循环、for循环中使用了let声明的变量,都会产生块级作用域。
const:
但是在不同的作用域,用const声明一样的常量没问题。
如果const声明的变量是个引用数据类型,比如对象,那么对对象进行修改的时候,不会报错
没有变量提升。
具有块级作用域。
const声明的常量也是独立的,不能被window调用
const声明的数组和对象,对其修改不会报错
//还有数组的解构赋值,用的少就不细说了
Symbol是es6引入的新的原始数据类型,是js的第七种数据类型,是类似于字符串的数据类型。
在对象中,凡是属性名属于Symbol类型的,这个属性就是独一无二的,在对象中就不会产生命名冲突的问题。
迭代器:一种数据接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署Iterator接口,就能实现遍历操作。
es6创建了一种新的遍历方式for…of循环,迭代器使用for…of循环就能进行遍历操作。
原生具备迭代器接口的数据结构有Array、Arguments、Set、Map、String、TypedArray、NodeList
迭代器工作原理:
(1)创建一个指针对象,指向当前数据结构的起始位置。这个对象是由Symbol(Symbol.iterator)这个函数创建
(2)第一次调用对象的next方法,指针自动指向第一个数据成员
(3)接下来不断调用next方法,指针一直往后移动,直至到最后一个成员
(4)每调用一次next方法,都会返回一个包含value和done的对象
生成器就是一个特殊的函数,异步编程一种新的解决方案。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/8131.html