一、ES5和ES6的差别,说呵呵你所晓得的ES6
ECMAScript5,即ES5,是ECMAScript的第六次修改,于2009年顺利完成技术国际标准
ECMAScript6,即ES6,是ECMAScript的第六次修改,于2015年顺利完成,也称ES2015
ES6是继ES5后的一场改良,相对于ES5更为简约,提升了合作开发工作效率
ES6追加的许多优点:
1)let新闻稿表达式和const新闻稿自变量,三个都有块级返回值
ES5中是没块级返回值的,因此var有表达式提升,在let中,采用的表达式很大要展开新闻稿
2)斜线表达式
ES6中的表达式表述无须采用URLfunction(),而要借助了()=>来展开表述
3)模版字符串
模版字符串是增强版的字符串,用反标点符号(`)标记,能当做一般字符串采用,也能用以表述二百一十三字符串
4)重构表达式
ES6 容许依照很大商业模式,从字符串和第一类中抽取值,对表达式展开表达式
5)for of循环式
for…of循环式能结点字符串、Set和Map内部结构、这类类似于字符串的第一类、第一类,和字符串
6)import、export引入求出
ES6国际标准中,Js原生全力支持组件(module)。将JS标记符拆分成相同机能的大块展开模组化,将相同机能的标记符分别写在相同文件中,各组件只需求出公共接口部分,然后通过组件的引入的方式能在其他地方采用
7)set数据内部结构
Set数据内部结构,类似于字符串。所有的数据都是唯一的,没重复的值。它本身是一个构造表达式
8)… 展开运算符
能将字符串或第一类里面的值展开;还能将多个值收集为一个表达式
9)修饰器 @
decorator是一个表达式,用以修改类甚至于是方法的行为。修饰器本质就是编译时执行的表达式
10)class 类的继承
ES6中无须像ES5一样采用原型链实现继承,而要引入Class这个概念
11)async、await
采用 async/await, 搭配promise,能通过编写形似同步的标记符来处理异步流程, 提升标记符的简约性和可读性
async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行顺利完成
12)promise
Promise是异步编程的一种解决方案,比传统的解决方案(回调表达式和事件)更合理、强大
13)Symbol
Symbol是一种基本类型。Symbol 通过调用symbol表达式产生,它接收一个可选的名字参数,该表达式返回的symbol是唯一的
14)Proxy代理
采用代理(Proxy)监听第一类的操作,然后能做许多相应事情
二、采用斜线表达式应注意什么?
(1)用了斜线表达式,this就不是指向window,而要父级(指向是可变的)
(2)不能够采用arguments对象
(3)不能用作构造表达式,这就是说不能够采用new命令,否则会抛出一个错误
(4)不能采用yield命令,因此斜线表达式不能用作 Generator 表达式
三、采用内部结构表达式,实现三个表达式的值的交换
let a = 1;
let b = 2;
[a,b] = [b,a];
四、var、let、const之间的差别
var新闻稿表达式能重复新闻稿,而let不能重复新闻稿
var是不受限于块级的,而let是受限于块级
var会与window相映射(会挂一个属性),而let不与window相映射
var能在新闻稿的上面访问表达式,而let有暂存死区,在新闻稿的上面访问表达式会报错
const新闻稿后必须表达式,否则会报错
const表述不可变的量,改变了就会报错
const和let一样不会与window相映射、全力支持块级返回值、在新闻稿的上面访问表达式会报错
五、如何采用Set去重
let arr = [12,43,23,43,68,12];
let item = […new Set(arr)];
console.log(item); //[12, 43, 23, 68]
六、forEach、for in、for of三者差别
forEach更多的用以结点字符串
for in 一般常用以结点第一类或json
for of字符串第一类都能结点,结点第一类需要通过和Object.keys()
for in循环式出的是key,for of循环式出的是value
七、将下面for循环式改成for of形式
let arr = [11,22,33,44,55];
let sum = 0;
for(let i=0;i
sum += arr[i];
}
答案:
let arr = [11,22,33,44,55];
let sum = 0;
for(value of arr){
sum += value;
}