成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

ES6學(xué)習(xí)總結(jié)(二)

microelec / 800人閱讀

摘要:關(guān)于的學(xué)習(xí)總結(jié)昨天寫了第一篇,主要是關(guān)于變量聲明關(guān)鍵字和,新增類型以及模板字符串,今天準(zhǔn)備寫第二篇,里面的函數(shù)部分,新增了箭頭函數(shù),參數(shù)以及參數(shù)默認(rèn)值。,這次我們在調(diào)用函數(shù)大的時(shí)候,兩個(gè)參數(shù)全部傳遞了值,因此返回。

關(guān)于ES6的學(xué)習(xí)總結(jié),昨天寫了第一篇,主要是關(guān)于變量聲明關(guān)鍵字let和const,新增類型Symbol以及模板字符串,今天準(zhǔn)備寫第二篇,ES6里面的函數(shù)部分,ES6新增了箭頭函數(shù),Rest參數(shù)以及參數(shù)默認(rèn)值。

箭頭函數(shù)

關(guān)于箭頭函數(shù),之所以這么稱呼,是因?yàn)樗褪怯梢粋€(gè)箭頭來定義的,例如:

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

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

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

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

當(dāng)參數(shù)的數(shù)目不止一個(gè)或者沒有的時(shí)候,需要用小括?。ǎ┌?/p>

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

當(dāng)返回的是一個(gè)對象的時(shí)候,需要注意大括弧外面加上()

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

箭頭函數(shù)中this的使用跟普通函數(shù)也不一樣,在JavaScript的普通函數(shù)中,都會(huì)有一個(gè)自己的this值,主要分為:

函數(shù)作為全局函數(shù)被調(diào)用時(shí),this指向全局對象

函數(shù)作為對象中的方法被調(diào)用時(shí),this指向該對象

函數(shù)作為構(gòu)造函數(shù)的時(shí)候,this指向構(gòu)造函數(shù)new出來的新對象

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

在箭頭函數(shù)中,this屬于詞法作用域,直接由上下文確定,對于普通函數(shù)中指向不定的this,箭頭函數(shù)中處理this無疑更加簡單,如下:

//ES5普通函數(shù)
function Man(){
  this.age=22;
  return function(){
    this.age+1;
  }
}
var cala=new Man();
console.log(cala())//undefined

//ES6箭頭函數(shù)
function Man(){
  this.age=22;
  return () => this.age+1;
}
var cala=new Man();
console.log(cala())//23

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

//沒有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 關(guān)鍵字
var Obj = () => {"hello world"};
var o = new Obj(); 
// TypeError: Obj is not a constructor

Rest參數(shù)

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

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參數(shù)前面若是有其他的形式參數(shù),那么rest參數(shù)只能放在最后面:

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

默認(rèn)參數(shù)值

在ES6以前,函數(shù)調(diào)用時(shí),那些沒有傳遞的參數(shù),JavaScript默認(rèn)為undefined,ES6中新增了參數(shù)默認(rèn)值,允許使用默認(rèn)值來初始化形參

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

上面這個(gè)例子可以看到,定義了一個(gè)參數(shù)相乘的簡單函數(shù),在調(diào)用函數(shù)的時(shí)候,只傳入了第一個(gè)參數(shù)的值,結(jié)果返回100,是因?yàn)樵诤瘮?shù)中第二個(gè)參數(shù)默認(rèn)值為10,若我們在調(diào)用函數(shù)的時(shí)候沒有顯式的指明參數(shù)值,則會(huì)默認(rèn)使用參數(shù)默認(rèn)值。

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

這次我們在調(diào)用函數(shù)大的時(shí)候,兩個(gè)參數(shù)全部傳遞了值,因此返回200。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/87265.html

相關(guān)文章

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

    摘要:特意對前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • ES6解構(gòu)賦值學(xué)習(xí)總結(jié)

    摘要:提供了解構(gòu)賦值的方式,這樣子在賦值多個(gè)變量或者進(jìn)行注釋時(shí)可以方便很多,不同場景下也有很多新的應(yīng)用,個(gè)人常使用的有數(shù)組的解構(gòu)賦值,對象的解構(gòu)賦值和函數(shù)參數(shù)的解構(gòu)賦值,函數(shù)參數(shù)的解構(gòu)賦值之前總結(jié)過,這里寫下數(shù)組的和對象的簡單總結(jié)吧函數(shù)參數(shù)的解構(gòu) ES6提供了解構(gòu)賦值的方式,這樣子在賦值多個(gè)變量或者進(jìn)行注釋時(shí)可以方便很多,不同場景下也有很多新的應(yīng)用,個(gè)人常使用的有數(shù)組的解構(gòu)賦值,對象的解構(gòu)賦...

    levinit 評(píng)論0 收藏0
  • 2018年騰訊前端總結(jié)(面向2019屆學(xué)生)

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

    gself 評(píng)論0 收藏0
  • ES6系統(tǒng)學(xué)習(xí)----對比var,let

    摘要:對于,雖然之前也有過學(xué)習(xí),但總的來說還是不夠系統(tǒng)的,知識(shí)點(diǎn)非常的零碎。因此包括以為基礎(chǔ)產(chǎn)生的語法糖在逐漸的趨近于強(qiáng)類型的語言。是創(chuàng)建,而不是的覆蓋。因而稱之為富一代。所以語法標(biāo)準(zhǔn)的更新將對良好編程習(xí)慣有著極大的利好。 對于ES6,雖然之前也有過學(xué)習(xí),但總的來說還是不夠系統(tǒng)的,知識(shí)點(diǎn)非常的零碎。現(xiàn)在結(jié)合之前遇到的問題把ES6中的知識(shí)點(diǎn)總結(jié)一下。最初接觸ES6時(shí),明白ES5中聲明變量的方式...

    ls0609 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<