zoukankan      html  css  js  c++  java
  • 关于ES6的数组字符串方法

    注:ES6的一些新属性会显示语法错误,不过不会影响效果,在Languages里面也可以调;

    let:用来定义变量

    特点:只能在代码块里面使用,let拥有块级作用域;并且let不允许重复声明;比如:
        var a = 12; var a = 5; alert(a);//5;
        let a = 12; let a = 5; alert(a);//报错;Identifier 'a' has already been declared
    
    代码块:{}包起来的代码,形成了一个作用域,比如if,for,while,json除外;块级作用域;
    
    var 只有函数作用域;
    
    用处:
        自执行函数:
            for(let i = 0; i < aBtn.length; i++){
                aBtn[i].onclick = function(){
                    alert(i);//0,1,2
                }
            }
    
    *** 块级作用域其实就是匿名函数自执行;
    

    const:一般用来定义常量

    常量:不允许修改;有些时候定的变量不希望被改变,这个不希望被改变的值就是常量;比如:
    
    let a = 5; 
    
    a = 12;  
    
    alert(a);//12;
    
    其实希望a的值是5,但是下面有相同的变量名字覆盖了let a的值;这个时候就要用到const;
    

    const一旦被赋值,以后再也无法修改,比如:

    const a = 12;
    
    a = 5;
    
    alert(a);//Assignment to constant variable.
    

    const必须给初始值,比如:

    const a;
    
    a = 12;
    
    alert(a);//Missing initializer in const declaration;
    
    正确的写法: const a = 12;因为const定义的变量以后再也没法赋值了;
    

    const不能重复声明,比如:

    const a = 12;
    
    const a = 5;
    
    alert(a);//Identifier 'a' has already been declared;
    
    用途:防止意外修改变量;
    

    关于字符串连接

    之前定义字符串:
    
        var str = '';或者 var str = "";
    
    ES6定义字符串:
    
        var str1 = `elcome;
    
        var str2 = `w`;
    
    ES6连接字符串:${变量名}
    
        var str3 = `${str2}${str1}`; //输出:welcome;
    

    解构赋值

    ES6之前:
    
        //var a = 12;
    
        //var b = 5;
    
        //var c = 10;
    
        //alert(a);
    
    ES6:
    
        var [a,b,c] = [12,5,10];//数组的形式定义;
            alert(a);//访问某一项
            console.log(a);//打印出全部的值;
    
        var {a,b,c} = {a:12,b:5,c:10};//json的形式定义;跟顺序无关;
            alert(a);//访问某一项;
            console.log(a,b,c);//打印出全部的值;
    
    使用ES6定义的时候注意模式匹配:
    
        模式匹配:左边的样子和右边的一样;
    
        var [a,[b,c],d] = [1,[3,4],5];
        console.log(a,b,c,d);
    
    解构赋值默认值的写法:
    
        var {time=12,id=321} = {};
    
        console.log(time,id);//这里的time和id都是默认值;因为等号右边没有赋值;所以需要给默认值,如果不给默认值的的话是undefined;
    

    Array.from():复制一个数组

    var arr = [1,2,3,4];
    
    var arr2 = Array.from(arr);
    
    arr2.pop();//删除arr2中的某一项不会影响到arr;
    
    console.log(arr,arr2);
    

    快速复制一个数组: ···

    实例1:
    
        var arr = [1,2,3,4];
    
        var arr2 = [...arr1];//引用arr1里面的内容;
    
        arr2.pop();
    
        console.log(arr2);
    
    实例2:
    
        function show(...args){
            console.log(args);//1,2,3,4;这里的值也就是arguments的每一个;
            args.push(5);//往arguments里面添加一个;
            console.log(args);//往arguments里面添加一个5,这在ES6之前是不允许的;
        }
        show(1,2,3,4);
    

    新增循环 for of

    for of 用来遍历(迭代/循环)整个对象;表现类似于for in;
    
        var arr = ['banana','pear','orange','apple'];
        for(var i in arr){//i是索引;
            console.log(i);//0,1,2,3,索引;
        }
    
        for(var i of arr){//i是值;
            console.log(i);//banana,pear,orange,apple;
        }
    
    for of 循环不能用来循环json,可以循环数组,for of的真正目的是为了循环map对象;实例如下:
        var json = {
            'a':'12',
            'b':'11',
            'c':'10',
        };
    
        for(var name of json){
            console.log(name);//json[Symbol.iterator] is not a function(…)
        }
    
        for of 也可以循环数组:
    
            只循环值:for(var name of arr){ console.log(name) };
    
            只循环索引:for(var name of arr.keys()){ console.log(name) };
    
            索引和值都循环: for(var name of arr.entries()){ console.log(name) };
    

    Map对象

    和json相似,也是键值对的形式 key-value;Map对象主要是为了和for of循环配合而生。
    
    怎么得到一个Map对象:var oMap = new Map();
    
    设置:oMap.set(name,value);
    
        oMap.set(name,value);//给Map对象设置值;   
    
        oMap.set('a','banana');
    
        oMap.set('b','pear');
    
        console.log(oMap);//{"a" => "banana", "b" => "pear"}
    
    获取:oMap.get(name);
    
        oMap.get('a');//banana;
    
    删除:oMap.delete(name);
    
        oMap.delete('a');
    
    循环Map用for of:
        var oMap = new Map();
        oMap.set('a','banana');
        oMap.set('b','pear');
        oMap.set('c','orange');
        oMap.set('d','apple');
    
        for(var name of oMap){ ==>此种写法的本质就是循环了oMap.entries();
            console.log(name);//结果中不仅有name,还有value; a,banana  b,pear  c,orange  d,apple
        }==>此种写法等价于:
    
        for(var name in oMap.entries()){
            console.log(name);
        }
    
        //以key-value的形式取值:
        for(var [key,value] of oMap){
            console.log(key+':'+vlaue);//a:banana b:pear c:orange d:apple
        }
    
        只循环key
        for(var key of oMap.keys()){
            console.log(key);//a,b,c,d
        }
    
        支循环value
        for(var val of oMap.values()){
            console.log(val);//banana,pear,orange,apple
        }
    

    箭头函数

    ES6之前:
        function show(a,b,c){ return a+b+c }
    
    ES6:=>
        注意:
            箭头函数里面的this指的是window;
            在箭头函数中arguments不能使用了;
    
    ES6:给默认值
        var move=()=>{
            console.log(obj);//undefined;因为obj未传参;有些时候不希望有undefined;这个时候需要给一个默认值;
        }
        move();
    
        var move=(obj='参数必须传递')=>{
            console.log(obj);//参数必须传递;
        }


    2016/11/29 16:40:07

  • 相关阅读:
    一些零碎小知识点积累随笔
    STM32学习笔记——新建工程模板步骤(向原子哥学习)
    记一次电信反射xss的挖掘与利用
    mysql字符串操作相关函数用法总结
    mysql学习笔记
    sigmoid function的直观解释
    多变量线性回归时使用梯度下降(Gradient Descent)求最小值的注意事项
    SAE中Python无法创建多线程的解决方案
    BCNF/3NF 数据库设计范式简介
    web.py下获取get参数
  • 原文地址:https://www.cnblogs.com/AKI-LILI/p/ES6.html
Copyright © 2011-2022 走看看