es6 入坑筆記(一)---let,const,解構,字符串模板

let 

全面取代varjavascript

大概類似於C++的定義,一個變量必須得先定義後使用,沒有預編譯java

注意let的做用域,一個{}就是一個做用域,上述規則須在一個做用於內es6

坑:for(let i =0;i < 10; i++){json

    let i=20;數組

  }spa

這個例子存在父子做用域,即(){}各爲一個做用域,因此i能夠重複letcode

const

即靜態變量值不容許改變,經常使用於聲明爲一個常量對象

坑:let arr=new array(1,2,3);token

  arr.push(4);//arr:1,2,3,4ip

由於數組爲引用,引用的地址不能改變,但地址映射的數組內的值能夠改變

要想徹底不變則使用:object.freeze();

 

解構

es6最強大的功能之一,簡而言之即左邊的結構與右邊的結構進行匹配,若是匹配成功則賦值給z左邊

eg:

let a = 10,b = 20;

let [c,d] = [b,a];//c = 20,d = 10

//當作左邊的與右邊的不匹配則爲undifine

let [e,f,g] =[b,a]//e=20,f=10,g:undefine

//左邊可設默認值,當左邊與右邊的不匹配時使用默認值

let [h, i,j=100] = [b,a]//h=20,i=10,j=100

//對象賦值,同上,但可取別名,注意對象進行模式匹配時是按照鍵名進行匹配,不是循序匹配

let json = {

  name:"zjj",

  age:"20",

  sex:"man"

};

let [name,aaaaa,age:Age]=json;//name="zjj" ,aaaaa = undifune, Age = "20"

坑:

1.解構時null視爲一個正常值,當右邊爲null時左邊匹配的默認值不會生效,只有當右邊徹底等於(===)undifine時默認值纔會生效

2.解構時的默認值爲惰性的,只有使用的纔會求值 

function f() { console.log('aaa'); }

let [x = f()] = [1];//不會打印出aaa

3.解構時右邊的值必須爲能夠遍歷的結構,例如數組,對象,set,map等,let [demo] = 10;//ERROR

4.

let x;

{x} = {x: 1};

上面代碼的寫法會報錯,由於 JavaScript 引擎會將{x}理解成一個代碼塊,從而發生語法錯誤。只有不將大括號寫在行首,避免 JavaScript 將其解釋爲代碼塊,才能解決這個問題。改成

let x;

({x} = {x: 1});

上面代碼將整個解構賦值語句,放在一個圓括號裏面,就能夠正確執行

字符串模板

let name = "zjj",age = 15;
let str=`名字爲:${name},年齡:${age}`;//str="名字爲:zjj,年齡:15"

字符串使用`,拼接的內容使用${...}的形式

相關文章
相關標籤/搜索