ES5&ES6新特性

淡淡的烟草味﹌ 2022-04-11 12:13 425阅读 0赞

ES5和6的一些新特性

1、let和const

  1. var有一个问题,就是定义的变量有时会莫名奇妙的成为全局变量。
  2. for(var i = 0; i < 5; i++){
  3. console.log(i);
  4. }
  5. console.log("循环外:" + i)
  6. 1let所声明的变量,只在let命令所在的代码块内有效。
  7. 2const声明的变量是常量,不能被修改

会报错:

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Nzd3F6eA_size_16_color_FFFFFF_t_70

2、字符串扩展

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

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

3、解构表达式

数组解构:

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

对象解构:

  1. const person = {
  2. name:"jack",
  3. age:21,
  4. language: ['java','js','css']
  5. }
  6. // 解构表达式获取值
  7. const {name,age,language} = person;
  8. // 打印
  9. console.log(name);
  10. console.log(age);
  11. console.log(language);

4、函数优化

现在的写法:

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

箭头函数:

一个参数:

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

多个参数:

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

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

  1. var sum3 = (a,b) => {
  2. return a + b;
  3. }

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

  1. let person = {
  2. name: "jack",
  3. // 以前:
  4. eat: function (food) {
  5. console.log(this.name + "在吃" + food);
  6. },
  7. // 箭头函数版:
  8. eat2: food => console.log(person.name + "在吃" + food),// 这里拿不到this
  9. // 简写版:
  10. eat3(food){
  11. console.log(this.name + "在吃" + food);
  12. }
  13. }

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

  1. const person = {
  2. name:"jack",
  3. age:21,
  4. language: ['java','js','css']
  5. }
  6. function hello(person) {
  7. console.log("hello," + person.name)
  8. }
  9. 或写成
  10. var hi = ({name}) => console.log("hello,"+ name);

5、map和reduce

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

6、promise

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

7、set和map

  1. Set,本质与数组类似。不同在于Set中只能保存不同元素,如果元素相同会被忽略。
  2. map,本质是与Object类似的结构。不同在于,Object强制规定key只能是字符串。而Map结构的key可以是任意对象。即:
  • object是 集合
  • map是集合
  • // map接收一个数组,数组中的元素是键值对数组
    const map = new Map([

    1. ['key1','value1'],
    2. ['key2','value2'],

    ])
    // 或者接收一个set
    const set = new Set([

    1. ['key1','value1'],
    2. ['key2','value2'],

    ])
    const map2 = new Map(set)
    // 或者其它map
    const map3 = new Map(map);

    8、模块化

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

  • export命令用于规定模块的对外接口,
  • import命令用于导入其他模块提供的功能。

定义一个对象:

  1. const util = {
  2. sum(a,b){
  3. return a + b;
  4. }
  5. }

使用export将这个对象导出:

  1. const util = {
  2. sum(a,b){
  3. return a + b;
  4. }
  5. }
  6. export util;
  7. 可简写:
  8. export const util = {
  9. sum(a,b){
  10. return a + b;
  11. }
  12. }

导出多个值时

  1. var name = "jack"
  2. var age = 21
  3. export {name,age}
  4. 可简写
  5. // 无需声明对象的名字
  6. export default {
  7. sum(a,b){
  8. return a + b;
  9. }
  10. }

导入上面的util

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

导放name和age属性

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

9、对象扩展

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

10、数组扩展

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

发表评论

表情:
评论列表 (有 0 条评论,425人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ES6特性

    ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下⼀个版本标准,2015.06 发版。ES6 主要是为了解决 ES5 的先天不⾜,⽐如 Jav...

    相关 es6特性

    1.let && const •都是块级作用域 •不能重复定义 •避免了变量提升 ① let命令也用于声明对象,但是作用域为局部。 ![在这里插入图片描述][

    相关 es6特性

    es6语法 > es6语法用起来是十分方便的,但是有些浏览器还是不支持,但是做大型项目中基本上要用到转码器(babel转码器),可以把es6语法转为es5直接使用。 T

    相关 ES6特性

    1.变量声明let和const 在ES6以前,var关键字声明变量。无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部)。这就是函数变量提升例如:

    相关 ES6特性

    1.声明变量的关键字:const 和 let JavaScript ES6中引入了另外两个声明变量的关键字:const和let。在ES6中,我们将很少能看到var了。 co