ES6新特性

目录

 

1、let 和 const 命令

 2、字符串扩展

 3、解构表达式

4、函数优化 

 1、参数默认值

2、箭头函数

 3、对象的函数属性简写

 4、箭头函数结合解构表达式

5、map和reduce 

 6、扩展运算符

7、Promise 

 8、set 和 map

9、 class 的基本语法

10、Generator函数

11、修饰器

 12、转码器

 13、模块化


1、let 和 const 命令

问题:var 有一个问题,就是定义的变量有时会莫名奇妙的成为全局变量

 解决:通过 let 把变量的i的作用域控制在了循环内部。

 

 const 声明的变量是常量,不能被修改,类似于java中final关键字。

 

 2、字符串扩展

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

 ES6中提供了 ` 来作为字符串模板标记。

 

 3、解构表达式

 ES6中允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构

 

 

 属性别名

4、函数优化 

 1、参数默认值

 

2、箭头函数

 

 3、对象的函数属性简写

 

 4、箭头函数结合解构表达式

 

5、map和reduce 

 map() :接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。

 

 reduce() :接收一个函数(必须)和一个初始值(可选),该函数接收两个参数:

  • 第一个参数是上一次reduce处理的结果
  • 第二个参数是数组中要处理的下一个元素

reduce() 会从左到右依次把数组中的元素用reduce处理,并把处理的结果作为下次reduce的第一个参数。如果是第一次,会把前两个元素作为计算参数,或者把用户指定的初始值作为起始参数

 

 

 6、扩展运算符

 扩展运算符(spread)是三个点(...), 将一个数组转为用逗号分隔的参数序列 。

 

7、Promise 

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

 

 8、set 和 map

Set,本质与数组类似。不同在于Set中只能保存不同元素,如果元素相同会被忽略。和java中的Set集合非常相似。

 

 map,本质是与Object类似的结构。不同在于,Object强制规定key只能是字符串。而Map结构的key可以是任意对象。即:

  • object是 <string,object>集合
  • map是<object,object>集合

 

9、 class 的基本语法

 继承:

 

10、Generator函数

 Generator 函数是 ES6 提供的 一种异步编程解决方案,语法行为与传统函数完全不同 。

 Generator函数有两个特征:

一、是 function命令与函数名 之间有一个星号:

二、是 函数体内部使用 yield吾句定义不同的内部状态。

 通过for...of可以循环遍历Generator函数返回的迭代器。

 

11、修饰器

修饰器(Decorator)是一个函数, 用来修改类的行为。 ES2017 引入了这项功能, 目前 Babel 转码器己经支持。

        @T
        class User{
            constructor(name, age = 20){
                this.name = name;
                this.age = age;
            }
        }

        function T(target){
            console.log(target);
            target.country = "中国";
        }

        console.log(User.country);

 12、转码器

 可以将 ES6 代码转为 ES5 代码,从而 在浏览器或其他环境执行 。

#通过初始化命令将生成package.json文件,它是 NodeJS 约定的用来存放项目的信息和配置等信息的文件。
tyarn init -y

#通过umi命令创建index.js文件
umi g page index  #可以看到在pages下创建好了index.js和index.css文件

#将下面内存拷贝到index.js文件中进行测试
 @T //通过@符号进行引用该方法,类似java中的注解
 class User {
   constructor(name, age = 20){
     this.name = name;
     this.age = age;
   }
 }
 
  function T(target) { //定义一个普通的方法
   console.log(target); //target对象为修饰的目标对象,这里是User对象
   target.country = "中国"; //为User类添加一个静态属性country
 }
 console.log(User.country); //打印出country属性值

#通过命令行启动umi的后台服务,用于本地开发
umi dev
#通过浏览器进行访问:http://localhost:8000/,查看效果
#值得注意的是,这里访问的是umi的后台服务,不是idea提供的服务

 13、模块化

模块化就是把代码进行拆分,方便重复利用。类似java中的导包:要使用一个包,必须先导包。

模块功能主要由两个命令构成: export 和 import 。

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值