国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES6學習總結(二)

microelec / 758人閱讀

摘要:關于的學習總結昨天寫了第一篇,主要是關于變量聲明關鍵字和,新增類型以及模板字符串,今天準備寫第二篇,里面的函數部分,新增了箭頭函數,參數以及參數默認值。,這次我們在調用函數大的時候,兩個參數全部傳遞了值,因此返回。

關于ES6的學習總結,昨天寫了第一篇,主要是關于變量聲明關鍵字let和const,新增類型Symbol以及模板字符串,今天準備寫第二篇,ES6里面的函數部分,ES6新增了箭頭函數,Rest參數以及參數默認值。

箭頭函數

關于箭頭函數,之所以這么稱呼,是因為它就是由一個箭頭來定義的,例如:

//ES5
function foo(param){
    return param*param;
}
//ES6 箭頭函數
var foo= param => param*param;

上面的代碼簡單比較了ES5中普通函數與ES6箭頭函數的的寫法,很明顯的可以看出,箭頭函數顯得更加的簡便,箭頭函數中,有一些需要注意的地方:

返回值必須明確,并且在大括弧內必須加上return關鍵字,若是省略大括弧,則可以省略return

//返回值的寫法,下面兩種是一樣的
() => "hello world";
() => { return "hello word"; }

當參數的數目不止一個或者沒有的時候,需要用小括?。ǎ┌?/p>

//沒有參數或者多個參數需要加小括號 
var foo1 = () => "hello world";
var foo1 = () => { return "hello word"; }
var foo2 = (param1,param2) => param1*param2;

當返回的是一個對象的時候,需要注意大括弧外面加上()

//返回對象需要函數體外面要加小括號
var foo3 = param => ({key: value})

箭頭函數中this的使用跟普通函數也不一樣,在JavaScript的普通函數中,都會有一個自己的this值,主要分為:

函數作為全局函數被調用時,this指向全局對象

函數作為對象中的方法被調用時,this指向該對象

函數作為構造函數的時候,this指向構造函數new出來的新對象

還可以通過call,apply,bind改變this的指向

在箭頭函數中,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

箭頭函數中沒有arguments(我們可以用rest參數替代),也沒有原型,也不能使用new 關鍵字,例如:

//沒有arguments
var foo=(a,b)=>{return arguments[0]*arguments[1]}
console.log(foo(3,5))
//arguments is not defined

//沒有原型
var Obj = () => {};
console.log(Obj.prototype); 
// undefined

//不能使用new 關鍵字
var Obj = () => {"hello world"};
var o = new Obj(); 
// TypeError: Obj is not a constructor

Rest參數

Rest參數名為剩余參數,以...為前綴,上面講過,ES6的箭頭函數中不能使用arguments,我們可以用rest參數來替代,例如:

function foo(){
  return arguments.length;
}
console.log(foo(1,2,3)) // 3

var foo= (...rest) => {
  return rest.length;
}
console.log(foo(1,2,3)) // 3

在rest參數前面若是有其他的形式參數,那么rest參數只能放在最后面:

var foo = (param1,param2,...rest) => {
    return param1 + param2 + rest.length;
};
console.log(foo(1,2,3,4,5)) // 6

var foo = (param1,...rest,param2) => {
    return param1 + param2 + rest.length;
};
console.log(foo(1,2,3,4,5)) //  Rest parameter must be last formal parameter

默認參數值

在ES6以前,函數調用時,那些沒有傳遞的參數,JavaScript默認為undefined,ES6中新增了參數默認值,允許使用默認值來初始化形參

var foo = (param1,param2=10) => {
  return param1*param2;
}
console.log(foo(10)) // 100

上面這個例子可以看到,定義了一個參數相乘的簡單函數,在調用函數的時候,只傳入了第一個參數的值,結果返回100,是因為在函數中第二個參數默認值為10,若我們在調用函數的時候沒有顯式的指明參數值,則會默認使用參數默認值。

var foo = (param1,param2=10) => {
  return param1*param2;
}
console.log(foo(10,20)) // 200

這次我們在調用函數大的時候,兩個參數全部傳遞了值,因此返回200。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87265.html

相關文章

  • 前端資源系列(4)-前端學習資源分享&前端面試資源匯總

    摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入匯總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業務工作時也會不定期更...

    princekin 評論0 收藏0
  • ES6解構賦值學習總結

    摘要:提供了解構賦值的方式,這樣子在賦值多個變量或者進行注釋時可以方便很多,不同場景下也有很多新的應用,個人常使用的有數組的解構賦值,對象的解構賦值和函數參數的解構賦值,函數參數的解構賦值之前總結過,這里寫下數組的和對象的簡單總結吧函數參數的解構 ES6提供了解構賦值的方式,這樣子在賦值多個變量或者進行注釋時可以方便很多,不同場景下也有很多新的應用,個人常使用的有數組的解構賦值,對象的解構賦...

    levinit 評論0 收藏0
  • 2018年騰訊前端總結(面向2019屆學生)

    摘要:前言很認真的說吧,在和騰訊面試官的面試的過程。騰訊二面自我介紹二面的面試官和一面不是同一個面試官,所以在這個時候,我的基本介紹還是和一面一樣,介紹自己的基本信息,以及怎么想到學習前端和怎么學習前端。 前言 很認真的說吧,在和騰訊面試官的面試的過程。有點感覺是在聊天一樣,他們是面試官,但是感覺更像是引路人,不管結果的好壞,在騰訊面試的過程,只要你認真去聽去問,就可以學到很多東西吧。 如果...

    gself 評論0 收藏0
  • ES6系統學習----對比var,let

    摘要:對于,雖然之前也有過學習,但總的來說還是不夠系統的,知識點非常的零碎。因此包括以為基礎產生的語法糖在逐漸的趨近于強類型的語言。是創建,而不是的覆蓋。因而稱之為富一代。所以語法標準的更新將對良好編程習慣有著極大的利好。 對于ES6,雖然之前也有過學習,但總的來說還是不夠系統的,知識點非常的零碎?,F在結合之前遇到的問題把ES6中的知識點總結一下。最初接觸ES6時,明白ES5中聲明變量的方式...

    ls0609 評論0 收藏0

發表評論

0條評論

microelec

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<