ES5&ES6新特性

您所在的位置:网站首页 es6的新增特性 ES5&ES6新特性

ES5&ES6新特性

2023-12-18 02:57| 来源: 网络整理| 查看: 265

ES5和6的一些新特性

1、let和const

var有一个问题,就是定义的变量有时会莫名奇妙的成为全局变量。 for(var i = 0; i < 5; i++){ console.log(i); } console.log("循环外:" + i)

 

1、let所声明的变量,只在let命令所在的代码块内有效。 2、const声明的变量是常量,不能被修改

 会报错:

for(let i = 0; i < 5; i++){ console.log(i); } console.log("循环外:" + i)

2、字符串扩展

ES6为字符串扩展了几个新的API:

- includes():返回布尔值,表示是否找到了参数字符串。 - startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。 - endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。

 

3、解构表达式

数组解构:

let arr = [1,2,3] const [x,y,z] = arr;// x,y,z将与arr中的每个位置对应来取值 // 然后打印 console.log(x,y,z);

对象解构:

const person = { name:"jack", age:21, language: ['java','js','css'] } // 解构表达式获取值 const {name,age,language} = person; // 打印 console.log(name); console.log(age); console.log(language);

4、函数优化

现在的写法: 

function add(a=2 , b = 1) { return a + b; } // 传一个参数 console.log(add(10));

箭头函数:

一个参数:

let print = function (obj) { console.log(obj); } // 简写为: let print2 = obj => console.log(obj);

多个参数:

// 两个参数的情况: var sum = function (a , b) { return a + b; } // 简写为: var sum2 = (a,b) => a+b;

代码不止一行,可以用{}括起来

var sum3 = (a,b) => { return a + b; }

对象的函数属性简写、person对象、有eat方法

let person = { name: "jack", // 以前: eat: function (food) { console.log(this.name + "在吃" + food); }, // 箭头函数版: eat2: food => console.log(person.name + "在吃" + food),// 这里拿不到this // 简写版: eat3(food){ console.log(this.name + "在吃" + food); } }

箭头函索结合解构表达式:

const person = { name:"jack", age:21, language: ['java','js','css'] } function hello(person) { console.log("hello," + person.name) } 或写成 var hi = ({name}) => console.log("hello,"+ name);

 

5、map和reduce

map():接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。 reduce():接收一个函数(必须)和一个初始值(可选),该函数接收两个参数: - 第一个参数是上一次reduce处理的结果 - 第二个参数是数组中要处理的下一个元素 转为int数组 let arr = ['1','20','-5','3']; console.log(arr) arr = arr.map(s => parseInt(s)); console.log(arr) const arr = [1,2,-3,3]; arr.reduce((a,b)=> a+b) 显示:3

6、promise

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。

7、set和map

Set,本质与数组类似。不同在于Set中只能保存不同元素,如果元素相同会被忽略。 map,本质是与Object类似的结构。不同在于,Object强制规定key只能是字符串。而Map结构的key可以是任意对象。即:

object是 集合

map是集合

// map接收一个数组,数组中的元素是键值对数组 const map = new Map([ ['key1','value1'], ['key2','value2'], ]) // 或者接收一个set const set = new Set([ ['key1','value1'], ['key2','value2'], ]) const map2 = new Map(set) // 或者其它map const map3 = new Map(map);

8、模块化

模块化就是把代码进行拆分,方便重复利用 、模块功能主要由两个命令构成:export和import。

export命令用于规定模块的对外接口,

import命令用于导入其他模块提供的功能。

定义一个对象:

const util = { sum(a,b){ return a + b; } }

使用export将这个对象导出:

const util = { sum(a,b){ return a + b; } } export util; 可简写: export const util = { sum(a,b){ return a + b; } }

导出多个值时

var name = "jack" var age = 21 export {name,age} 可简写 // 无需声明对象的名字 export default { sum(a,b){ return a + b; } }

导入上面的util

// 导入util import util from 'hello.js' // 调用util中的属性 util.sum(1,2)

导放name和age属性

import {name, age} from 'user.js' console.log(name + " , 今年"+ age +"岁了")

9、对象扩展

- keys(obj):获取对象的所有key形成的数组 - values(obj):获取对象的所有value形成的数组

10、数组扩展

find(callback):把数组中的元素逐个传递给函数callback执行,如果返回true,则返回该元素

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3