zoukankan      html  css  js  c++  java
  • ES6.0简单了解

    Case 1:let、const

    var的缺陷

    1、可以重复声明变量

    2、无法限制修改(没有常量)

    3、没有块级作用域

    let和const可以弥补var的缺陷

    let:  不能重复声明,用来声明变量,声明的变量的值可以修改,支持块级作用域

    const:  不能重复声明,用来声明常量,声明的常量的值不能改变,支持块级作用域

    Case 2:箭头函数

    ()=>{   /*  code  */   }

    前提:

    1、如果有且只有一个参数,那么圆括号()可以省,参数保留

    2、如果有且只有一个语句,并且是return语句,那么花括号{  } 和 return关键字 可以省

      示例_1:

    let compute = function(a,b){
    	alert(a+b);
    }
    compute(10,20);
    
    //等价于
    compute = (a,b)=>{
    	alert(a+b);
    }
    compute(20,30);
    

      

      示例_2

    let compute = function(a){
    	if(a>10){
    		return a*2;
    	} else {
    		return a/2;
    	}
    }
    alert(compute(10));
    
    //如果有且只有一个参数,那么圆括号()可以省
    //等价于
    compute = a =>{
    	if(a>10){
    		return a*2;
    	} else {
    		return a/2;
    	}
    }
    alert(compute(10));
    

      

      示例_3

    let compute = function(a,b){
    	return a + b;
    }
    alert(compute(10,20));
    
    //如果有且只有一个语句,并且是return语句,那么花括号{  } 和 return关键字 可以省
    //等价于
    compute = (a,b) => a + b;
    
    alert(compute(10,30));
    

      

      综上:

    let compute = function(a){
    	return a*2;
    }
    alert(compute(10));
    
    //如果有且只有一个参数,那么圆括号()可以省,参数保留
    //如果有且只有一个语句,并且是return语句,那么花括号{  } 和 return关键字 可以省
    //等价于
    compute = a => a*2;
    alert(compute(20));
    

      

    Case 3:函数参数

    调用函数的时候,传递的参数个数可能和定义的时候不同,那么可以使用"...args"来获取剩余参数,args随意命名。

    使用 ...array可以展开数组,类似于将数组元素排列显示

      示例_1

    function compute(a,b,...args){
    	alert(args);
    }
    compute(1,2,3,4,5);//3,4,5
    

      

      示例_2

    function compute(a,b,c){
    	alert(a);
    	alert(b);
    	alert(c);
    }
    compute(1,2,3);//1,2,3
    
    let arr = [4,5,6];
    compute(...arr);//4,5,6
    //  ...arr的作用的是展开数组
    //  ...arr == 4,5,6
    

      

      示例_3

    let arr = [4,5,6];
    let arr2 = [7,8,9];
    let arr3 = [...arr,...arr2];
    console.log(arr3);//4,5,6,7,8,9
    

      

    Case 4:解构赋值

     左右两边结构必须一样,右边是数组,左边也得是数组;右边是json,左边也得是json。

    声明和赋值不能分开,必须在一条语句内完成。

    使用json格式时,左右两边的key必须是相同的,但是位置可以不用一一对应,以key为准。

      示例_1

    //左右两边结构必须一样
    let [a,b,c] = [1,2,3];
    console.log(a,b,c);//1,2,3
    
    //注意key的名称要相同,但位置不用一一对应。
    let {name,sex,age} = {name:"abc",age:20,sex:"male"};
    console.log(name,sex,age);//abc male 20
    
    //综上
    let [{v1,v2},[v3,v4],v5] = [{v1:"abc",v2:"xyz"},[123,456],"demo"];
    console.log(v1,v2,v3,v4,v5);//abc xyz 123 456 demo
    
    //拓展
    let [json,arr,v] = [{v1:"abc",v2:"xyz"},[123,456],"demo"];
    console.log(json,arr,v);//{v1: "abc", v2: "xyz"} [123, 456] "demo"
    

      

    Case 5:数组

    map  映射:数组中有几个元素,那么返回的结果一定是有那么多个元素的数组,没有返回的item为undefined

    reduce 汇总:数组中有多个元素,但是结果只有一个结果。

    filter  过滤器:只保留在filter中返回true的元素,返回的结果是一个数组

    foreach 循环,没有返回值

    map和forEach的区别,都会循环一遍数组,但是map有返回值,为一个数组,forEach没有返回值。

      示例——map

    let arr = [50,60,70];
    
    //map会每次从数组中取一个元素,赋值给item,值传递
    let res_1 = arr.map(function(item){
    	return item > 60 ? "及格" : "不及格";
    });
    console.log(res_1);//["不及格", "不及格", "及格"]
    
    let res_2 = arr.map(item =>item > 60 ? "及格" : "不及格");
    console.log(res_2);//["不及格", "不及格", "及格"]
    
    let res_3 = arr.map(function(item){
    	if(item > 60){
    		return item > 60 ? "及格" : "不及格";
    	}
    });
    console.log(res_3);//[undefined, undefined, "及格"]
    //没有return的item对应的值为undefined。 
    

      

      示例——reduce

    let arr = [50,60,70];
    
    //reduce会每次从数组中取一个元素,赋值给item,item的下表赋值给index,是以1开始,而非0
    //第一次tmp没有值,所以用数组的第一个元素。item为第二个元素,所以index为1
    //tmp为上一次计算的结果。最后返回的结果是计算的总结果
    let result = arr.reduce(function(tmp, item, index){
    	console.log(tmp,item,index);
    	return tmp + item;
    });
    
    //输出:
    //50 60 1
    //110 70 2
    console.log(result);//180
    

      

      示例——forEach

    let arr = [50,60,70];
    
    arr.forEach((item,index)=>{
    	console.log(index + " => " + item);
    });
    //输出
    //0 => 50
    //1 => 60
    //2 => 70
    

      

    Case 6:字符串

    增加了两个方法

      1、startsWith("prefix")

      2、endsWdith("suffix")

    字符串模板

      使用反单引号`  `,在中间可以使用${变量名}来加入变量值

      

      示例_1

    let str = "this is abc";
    console.log(str.startsWith("this"));//true
    console.log(str.startsWith("that"));//false
    console.log(str.startsWith("This"));//false   区分大小写
    
    console.log(str.endsWith("abc"));//true
    console.log(str.endsWith("Abc"));//false
    

      

      示例_2

    let name = "abc";
    let info = `your name is ${name}`;
    console.log(info);//your name is abc
    
    let html = `
    	<table>
    		<tr><td>姓名</td></tr>
    		<tr><td>${name}</td></tr>
    	</table>`;
    document.write(html);
    

      

    Case 7:对象

    更像Java了

      

      示例_1

    class User{
    	constructor(name){
    		this.name = name;
    	}
    	showName(){
    		return this.name;
    	}
    }
    
    let u1 = new User("abc");
    console.log(u1.showName());//abc
    
    class Teacher extends User{
    	constructor(name,age){
    		super(name);
    		this.age = age;
    	}
    	showAge(){
    		return this.age;
    	}
    }
    let t1 = new Teacher("xyz",30);
    console.log(t1.showName()); //xyz
    console.log(t1.showAge()); //30
    

      

    case 8:json

    JSON.stringify(jsonObj),将json对象转换成字符串

    JSON.parse(jsonString),将一个json格式的字符串转换为json对象。

    json在key和value是一样的时候,可以简写  

    json中的方法可以简写,和class中的方法一样

      示例_1

    let a = 12,b = 5;
    let json = {a:a, b:b};
    console.log(json);//{a: 12, b: 5}
    
    let json_1 = {a,b};
    console.log(json_1);//{a: 12, b: 5}
    

      

      示例_2

    let user = {
    	name:"abc",
    	showName(){
    		return this.name;
    	}
    }
    
    console.log(user.showName());//abc
    

      

    Case 9:Promise

    消除异步,以同步方式来处理代码,但是内部仍旧使用异步

      

      示例

    Promise.all([
    	$.ajax1
    	$.ajax2
    ]).then(result=>{
    	console.log("成功了");
    },err=>{
    	console.log("失败了");
    })
    

      

    Case 10:generator

    普通函数一旦执行,必须执行结束,或者遇到return才停

    generator函数中间可以暂停,然后继续执行。

    使用next()方法继续执行函数,会获得一个返回值,即yield后面的值。

    yield语句可以赋值给一个变量,形式上是赋值,其实是在调用next()方法传递的参数。

      示例:

    function *show(){
    	alert("aaaaa");
    
    	let str = yield alert("xxxxx");
    
    	alert("bbbbb");
    	alert(str);
    	
    	let ss = yield;
    
    	alert("cccccc");
    	alert(ss);
    }
    
    // show()不能直接执行
    let generatorObj = show();
    generatorObj.next("xyz"); //aaaaa
    					 		//xxxxx
    //第一次调用next()传递的参数没有用
    generatorObj.next("abc"); //bbbbb
    							//abc
    generatorObj.next("ufo"); //ccccc
    							//ufo
    

      

      

      

    updating

  • 相关阅读:
    Java8 Comparator 排序方法
    IDEA自动清理优化import包
    图灵的文章“Computing machinery and intelligence”译文
    NLP第一课(我也是才开始学)
    java面试基础篇(一)
    python基本排序算法
    python基础面试题整理---从零开始 每天十题(04)
    python基础面试题整理---从零开始 每天十题(03)
    python基础面试题整理---从零开始 每天十题(02)
    python基础面试题整理---从零开始 每天十题(01)
  • 原文地址:https://www.cnblogs.com/-beyond/p/8432121.html
Copyright © 2011-2022 走看看