zoukankan      html  css  js  c++  java
  • es6中一些不一样的地方

    一、定义变量

      1、let

        以前定义变量都是var,相对于var,let定义变量有其特殊的地方:

        1.let没有声明提前

        2.以前只有全局和函数,这里多了一个块级作用域 {} 

        3.var如果重复声明,后面会覆盖前面,现在,let不允许重复声明

      2、const

        const用来定义常量,一次定义,后面不可以修改。

        就算提前声明后面赋值也是不能进行修改的,声明的时候其值就已经为undefined,不能修改。

                    const a;
            a = 100;
        

    二、字符串的拼接

      以前我们字符串拼接" "+ +" ",而且进行换行等操作会异常麻烦,不换行在一行内又很难看清。

      es6里面字符串拼接``就省去了很多麻烦,可以进行换行操作且没有影响,中间添加变量直接用${}不用"+"连接,修改起来也很方便。

      

    str += `<ul> 
                <li>${uname}</li> 
                <li>nan</li> 
                <li>18</li> 
                <li>150123456878</li> 
                <li>xxx@xxx.com</li> 
            </ul>`

    三、数组的复制

      ...    超引用

      我们用原来的方法复制一个数组,对复制出来的数组进行修改会改动原有数组。

    var arr = [1,2,3,4,5];
            var arr2 = arr;
            arr2.push(6);
            console.log(arr);
            console.log(arr2)

      es6中用...超引用就可以复制一个数组并进行相应的修改。

    var arr4 = [...arr];
            arr4.push(6)
            console.log(arr);
            console.log(arr4)

    四、解构赋值

      让赋值变得简单,

    // 让你的赋值变得更简单,方便
            var a = 10;
            var b = 20;
            var c = 30; 
            var a = 10,b = 20,c = 30;
            console.log(a,b,c)
    
            解构,数组的格式
            var [a,b,c] = [40,20,30];
            console.log(a,b,c)
    
            json格式
            var {a,b,c} = {a:10,c:30,b:20};    //可以调换顺序
            console.log(a,b,c);
    
            var [a,[b,c],d] = [5,[10,20],30];  //格式对应即可
            console.log(a,b,c,d)
    
    
            // 解构
            var [{a,b},c,[d,e],f] = [{b : "jack",a : "100"},5,[10,20],30];
            console.log(a,b,c,d,e,f)

    五、循环

      先回顾一下es5中的循环:

        for 遍历数组

        for in 遍历obj

          for each 遍历obj

      es6中的for of 循环,语法跟for in相同:

    var arr = ["red","green","blue","yellow","black"];
            for(var i = 0;i < arr.length;i++){
                console.log(arr[i]);
            }
    
            for(var i in arr){
                console.log(i);   //输出的是索引
                console.log(arr[i]);
            }
    
            for(var i of arr){
                console.log(i);   //输出的直接是值
            }

      但是,for of不能用来遍历obj:

    var json = {
                "a" : "black",
                "b" : "grenn",
                "c" : "yellow",
                "d" : "red",
                "e" : "blue"
            }
    for(var name of json){   //for of 循环不能用来遍历obj
                console.log(name);    //err
            }

    六、Map对象

    // map就是用来存东西的,跟obj类似
            var map = new Map();   
            // console.log(map);
            map.abc = "jack";
            map.age = "100";
            console.log(map);
    
            // 设置值  增 该
            map.set("a","red");
            map.set("b","green");
            // console.log(map)
    
            //
            console.log(map.abc);
            console.log(map.get('a'));
    
            // 删除
            delete map.abc;
            delete map.a;
            map.delete("a");
            console.log(map)

      另外,Map对象可以通过for of进行遍历:

    var map = new Map();
            map.set("a","red");
            map.set("b","green");
            map.set("c","blue");
            map.set("d","yellow");
            map.set("e","black");
    for(var index of map.entries()){    //全写
                console.log(index);
            }
    
            // 只想循环key
            for(var key of map.keys()){
                console.log(key);
            }
    
    
            // 只想循环value
            for(var value of map.values()){
                console.log(value);
            }

    七、箭头函数

      es6里面的箭头函数除了写法不同外,比较需要注意的点就在不能用this,也不能用arguements:

    var box = document.getElementById("box");
            // box.onclick = function(){
            //     fun();
            // }
            // function fun(){
            //     this.style.background = '#f00'; 
            // }
            box.onclick = () => {
                this.style.background = '#f00'; 
            }
    
            // function fun(){
            //     console.log(arguments);
            // }
            var fun = () => {
                console.log(arguments);
            }
    
            fun(1,2,3,4)
    
            // 注意的地方
            // 1.不能用this,箭头函数中的this指向window
            // 2.不能使用arguments

    八、原型

      在ES6以前,必须有类和构造,在ES6以前是没有类的概念,构造函数即是构造,也是类、到了ES6,就将其完全划分开了:

    // class 类
            // constructor  构造函数
            class Person{   //
                constructor(name,age){    //构造
                    this.name = name;
                    this.age = age;
                }
                showName(){
                    return this.name;
                }
                showAge(){
                    return this.age;
                }
            }
            var person = new Person("jack",18);
            // var person2 = new Person("mack",20);
            // console.log(person.showName === person2.showName)
            // console.log(person.constructor === Person)
    
    
            // 继承
            // class Student extends Person{};
            // var student = new Student("mack",50);
            // console.log(student);
    
    
    
            class Student extends Person{
                constructor(name,age,pid){
                    // this.name = name;
                    // this.age = age;
                    super(name,age);
                    this.pid = pid;
                }
                showPid(){
                    return this.pid;
                }
            }
    
            var student = new Student("mack",50,"00001");
            console.log(student);
  • 相关阅读:
    2-python数据分析-基于pandas的数据清洗、DataFrame的级联与合并操作
    1-2-python数据分析-DataFrame基础操作巩固-股票分析、双均线策略制定
    1-python数据分析-数据分析三剑客之Pandas基础操作
    单例模式
    装饰器模式
    适配器模式
    es通用工具类ElasticSearchUtil
    ELK+RabbitMq搭建日志系统
    redis能保证数据100%不丢失吗?
    面试官问你redis是单线程还是多线程该怎么回答?
  • 原文地址:https://www.cnblogs.com/lznzxy/p/10478019.html
Copyright © 2011-2022 走看看