經常使用的ES6方法

 

經常使用的ES6方法html

ES6以後,新增了定義變量的兩個關鍵字,分別是let和const。面試

let和const都可以聲明塊級做用域,用法和var是相似的,let的特色是不會變量提高,而是被鎖在當前塊中。數組

實例-1:數據結構

惟一正確的使用方法:先聲明-->再訪問閉包

const 聲明常量,一旦聲明,不可更改,並且常量必須初始化賦值。 const雖然是常量,不容許修改默認賦值,但若是定義的是對象Object,那麼能夠修改對象內部的屬性:app

const和let的異同點 相同點:函數

  • const和let都是在當前塊內有效,執行到塊外會被銷燬,也不存在變量提高(TDZ),不能重複聲明。 

不一樣點:this

  • const不能再賦值,let聲明的變量能夠重複賦值。 const實際上保證的,並非變量的值不得改動,而是變量指向的那個內存地址所保存的數據不得改動。對於簡單類型的數據(數值、字符串、布爾值),值就保存在變量指向的那個內存地址,所以等同於常量。但對於複合類型的數據(主要是對象和數組),變量指向的內存地址,保存的只是一個指向實際數據的指針,const只能保證這個指針是固定的(即老是指向另外一個固定的地址),至於它指向的數據結構是否是可變的,就徹底不能控制了

塊級做用域的使用場景spa

  •  除了上面提到的經常使用聲明方式,咱們還能夠在循環中使用,最出名的一道面試題:循環中定時器閉包的考題 在for循環中使用var聲明的循環變量,會跳出循環體污染當前的函數。

 

在實際開發中,咱們選擇使用var、let仍是const,取決於咱們的變量是否是須要更新,一般咱們但願變量保證不被惡意修改,而使用大量的const。使用const聲明,聲明一個對象的時候,也推薦使用const,當你須要修改聲明的變量值時,使用let,var能用的場景均可以使用let替代。指針

二:函數

函數的默認參數 在ES5中,咱們給函數傳參數,而後在函數體內設置默認值,

在ES6中,咱們使用新的默認值寫法:

3、箭頭函數(=>)

 

箭頭函數中this的使用跟普通函數也不同,在JavaScript的普通函數中,都會有一個本身的this值,主要分爲: 

普通函數:

  •  一、函數做爲全局函數被調用時,this指向全局對象
  • 二、函數做爲對象中的方法被調用時,this指向該對象
  • 三、函數做爲構造函數的時候,this指向構造函數new出來的新對象
  • 四、還能夠經過call,apply,bind改變this的指向

 箭頭函數:

  • 一、箭頭函數沒有this,函數內部的this來自於父級最近的非箭頭函數,而且不能改變this的指向。
  • 二、箭頭函數沒有super
  • 三、箭頭函數沒有arguments
  • 四、箭頭函數沒有new.target綁定。
  • 五、不能使用new
  • 六、沒有原型
  • 七、不支持重複的命名參數

 

箭頭函數的簡單理解

一、箭頭函數的左邊表示輸入的參數,右邊表示輸出的結果。

 

const s = a => a

console.log(s(2)) // 2

  

 

 

二、在箭頭函數中,this屬於詞法做用域,直接由上下文肯定,對於普通函數中指向不定的this,箭頭函數中處理this無疑更加簡單,以下:

 

//ES5普通函數

function Man(){

 this.age=22;

 return function(){

   this.age+1;

 }


}

var cala=new Man();


console.log(cala())//undefined  
//ES6箭頭函數

function Man(){

 this.age=22;

 return () => this.age+1;

}
var cala=new Man();


console.log(cala())//23

ES6對象新增方法




合併具備相同屬性的對象
相關文章
相關標籤/搜索