關於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM