ES6新特性学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6新特性学习相关的知识,希望对你有一定的参考价值。

  ES6是ECMAScript 6的缩写简称,2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。ES6带来的新功能涵盖面很广,还有很多很便利的功能。下面来记一下我接触到的几个新特性。

  1.模板字符串,用反单引号包起来,可以实现字符串回车换行,也可以在字符串里拼接变量,${变量},很方便使用。   

var name="fanfan";
var age="20";

console.log("Hello,My name is "+name+",and I‘m "+age);//Hello,My name is fanfan,and I‘m 20
//es6新写法
console.log(`Hello,My name is ${name},and I‘m ${age}`);//Hello,My name is fanfan,and I‘m 20

  2.块级作用域关键字:let ,在特定的代码块中使用,超出范围无效

"use strict";
for(var i=0;i<3;i++){
    console.log("内层i");
}
console.log(i);//3
//es6新特性之let
for(let j=0;j<3;j++){
    console.log(‘内层j‘);
}
console.log(j);//undefined

技术分享

  3.for...of值循环,以前我们用for in方法遍历数组或者类数组的下标,es6中新增了for  of方法直接遍历数组或类数组的值

var arr=[‘a‘,‘b‘,‘c‘];
for(value of arr){
    console.log(value);
}
//a
//b
//c

  4.箭头函数=>,简化了函数的书写。操作符左边为输入的参数,而右边则是进行的操作以及返回的值,尤其是应用在匿名函数自调的场景

(function(){
 console.log(111);
 })();
//箭头函数 =>
(()=>{
    console.log(111);
})();

  5.class 类,一组相似对象的属性和行为的抽象集合

"use strict";
//使用class创建自定义对象
class Emp{
    //注意关键词constructor
    constructor(ename){
        this.ename=ename;
    }
    //方法
    work(){
        return `${this.ename} is working.`;
    }
}

 var e1=new Emp("fan",5000);
 console.log(e1.ename);//fan
 console.log(e1.work());//fan is working.

//继承,关键词extends
class Programmer extends Emp{
    constructor(ename,skills){
        super(ename);
        this.skills=skills;
    }
    work(){
        return super.work()+‘her  skill is ‘+this.skills;
    }
}
var e3=new Programmer("nancy",‘javascript);
console.log(e3.ename);//nancy
console.log(e3.skills);//javascript
console.log(e3.work());//nancy is working.her skill is javascript

  6.解构,可以让代码变得更加精简整洁,同时给多个变量赋值

/**解构: 同时为多个变量赋值
 */
/*1. 数组方式解构: 以下标为对应*/
var [a,b]=[1,2];
//0 1   0 1
console.log(a,b);
/*2. 对象结构: 以属性名为对应*/
var {m:month,y:year}={m:12,y:2016};
console.log(month,year);
/*3. 参数结构:*/
function g({name:x,age:y}){
    console.log(x,y);
}
g({name:"fanfan",age:20});

  7.函数的参数

/*1. Default: 函数的参数可设置默认值
* 强调: 带默认值的参数必须放在没有默认值的参数之后*/
function f(x,y=12){
  console.log(x+y);
}
f(3);
/*2. Rest: 获取传入函数的其他剩余参数*/
function calc(base,...bonus){
  console.log(
    bonus.reduce(function(prev,val){
      return prev+val;
    },base)
  );
}
calc(10000,2000,3000,4000,1000);
/*3.spread: 将数组散播到每个参数上*/
var bonus=[1000,2000,3000];
calc(10000,...bonus);

  8.promise,承诺的意思,可以理解为我承诺你执行回调函数,配合then使用

function connect(){
    console.log("连接数据库...");
    console.log("连接完成!");
    return new Promise(function(callback){
        callback();
    })
}//返回promise
function query(){
    console.log("开始查询...");
    console.log("查询完成!");
    return new Promise(function(callback){
        callback();
    })
}//返回promise
function show(){
    console.log("显示查询结果");
}
connect()
    .then(query)
    .then(show);

 

and so on...遇到再补充

以上是关于ES6新特性学习的主要内容,如果未能解决你的问题,请参考以下文章

ES6新特性学习

ES6新特性学习

java8新特性学习

Android5.0 新特性学习总结

iOS 11 Xcode9开发 新特性学习 (新方法篇)

java8新特性学习六(新时间日期API)