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

資訊專欄INFORMATION COLUMN

ES6學(xué)習(xí)之一

MartinDai / 2157人閱讀

摘要:現(xiàn)在幫我們解決這個(gè)問題了,使用和大括號(hào)定義局部變量,上段代碼可以改寫如下聲明的局部變量帶來(lái)的一個(gè)附加改變是無(wú)法進(jìn)行變量提升。從局部作用域開始到局部變量聲明之前這段被稱為暫時(shí)性死區(qū),是針對(duì)某特定局部變量而言的。

周末兩天學(xué)習(xí)了ES6基礎(chǔ)內(nèi)容,包括作用域、變量賦值、字符串、數(shù)值、數(shù)組、函數(shù)、對(duì)象這幾項(xiàng)的擴(kuò)展。整體感覺,ES6就是對(duì)ES5進(jìn)行bug修復(fù)和功能補(bǔ)充。

作用域

- 局部作用域與let

ES5不存在傳統(tǒng)意義上的塊級(jí)作用域,如果一定要說(shuō)有,那就是利用函數(shù)來(lái)模擬塊級(jí)作用域,如:

    // code 1
    (function(){
    //這里是塊級(jí)作用域
    //作用:限制向全局作用域中添加過(guò)多的變量和函數(shù),即避免內(nèi)部臨時(shí)變量影響全局空間
    })();

有些fresh meat ( like me, haha )可能會(huì)在使用for循環(huán)時(shí)忽略i是全局變量而導(dǎo)致循環(huán)無(wú)法終止,直至頁(yè)面崩潰,如下場(chǎng)景

// code 2
var arr1 = [1, 2, 3, 4];
var arr2 = [1, 2];
for (var i = 0; i < arr1.length; i++){
   blablabla...
   for (var i = 0; i < arr2.length; i++){
      blablabla...
   }
}

上面這段代碼中,someone可能認(rèn)為循環(huán)最多執(zhí)行4*2=8次,實(shí)際上這里會(huì)無(wú)限循環(huán):每次內(nèi)層循環(huán)執(zhí)行完畢,i都等于2,從而導(dǎo)致外層循環(huán)的循環(huán)條件永遠(yuǎn)為true。究其原因,在于內(nèi)外層是在同一個(gè)作用域,內(nèi)外層的i是同一個(gè)變量,而不是內(nèi)層自成作用域。
現(xiàn)在ES6幫我們解決這個(gè)問題了,使用let和大括號(hào)定義局部變量,上段代碼可以改寫如下:

// code 3
var arr1 = [1, 2, 3, 4];
var arr2 = [1, 2];
for (var i = 0; i < arr1.length; i++){
   blablabla...
   for (let i = 0; i < arr2.length; i++){
      blablabla...
   }
}

let聲明的局部變量帶來(lái)的一個(gè)附加改變是:無(wú)法進(jìn)行變量提升。在局部作用域內(nèi),使用let聲明變量之前,該變量都不可用。從局部作用域開始到局部變量聲明之前這段被稱為暫時(shí)性死區(qū)TDZ,TDZ是針對(duì)某特定局部變量而言的。

- const

js也有常量啦!這個(gè)不得不讓人感嘆js真的越來(lái)越像java了。const聲明的常量只在當(dāng)前作用域有效。另外,對(duì)于復(fù)合類型的變量,如對(duì)象,const變量存儲(chǔ)的是地址,這時(shí)不可修改的是地址,但地址中存儲(chǔ)的內(nèi)容是可變的。

變量賦值

- 默認(rèn)值
ES5中我們是不是經(jīng)常有這種寫法:

// code 4
var polySay = function(name, age) {
    name = sayWhat || "Poly";
    age = sayWhat || "forever 18";
    console.log("My nane is " + name + "and I"m " + age);
};

為了兼容不傳參數(shù)的情形,我們可能寫了N多類似以上的代碼?,F(xiàn)在ES6給我們提供了一項(xiàng)新功能:給變量設(shè)置默認(rèn)值。在聲明變量時(shí)可以設(shè)置一個(gè)默認(rèn)值,以備使用時(shí)發(fā)現(xiàn)改變量沒有賦值。
上面代碼可以改寫為:

// code 5
var polySay = function({name:"Poly", age: "forever 18"}) {
    console.log("My nane is " + name + "and I"m " + age);
};

- 解構(gòu)賦值
前面函數(shù)參數(shù)設(shè)置默認(rèn)值中,你可能注意到設(shè)置默認(rèn)值的方式有點(diǎn)陌生,這涉及到ES6為我們提供的另一個(gè)新功能:解構(gòu)賦值。解構(gòu)賦值是指按照一定模式,從數(shù)組和對(duì)象中提取值為變量進(jìn)行賦值。比如:

// code 6
let [a, [b], c] = [1, [2, 3]];
// a被賦值為1,b被賦值為2
// c沒有解析到相應(yīng)的解構(gòu),因此c被賦值為udefined

又比如:

// code 7
let {name: who, age} = {name: "Poly", age: "forever 18"};
// who被賦值為"Poly"

解構(gòu)賦值主要針對(duì)數(shù)組和對(duì)象,順帶捎上字符串、數(shù)值和布爾值。因?yàn)樽址畷?huì)被自動(dòng)轉(zhuǎn)換為字符數(shù)組,而后兩者會(huì)被轉(zhuǎn)換為對(duì)象。

// code 8
let [a, b, c] = "Hello";
// a被賦值為“H”,b 被賦值為“e”,c被賦值為“l(fā)”
// 因?yàn)榈忍?hào)右側(cè)的"Hello"被自動(dòng)轉(zhuǎn)化為["H", "e", "l", "l", "o" ]
let (toString:s) = 123;
// 數(shù)值123被轉(zhuǎn)化為對(duì)象,而Number對(duì)象有toString屬性
let (toString s) = true
// 布爾值true被轉(zhuǎn)化為對(duì)象,而Boolean對(duì)象有toString屬性

解構(gòu)賦值的應(yīng)用還包括:函數(shù)返回多個(gè)值、提取JSON數(shù)據(jù)。

// code 9
function polySay(){
   return [1, 2, 3];
}
// 再也不用拼數(shù)組拼對(duì)象(是拼湊,不是拼爹)
let [a, b, c] = polySay();
let json = {
   id: 111,
   name: "Poly",
};
let {id, name} = json;
//再也不用一個(gè)個(gè)取

很好用,有木有,有木有?

字符串

to do

數(shù)值

to do

數(shù)組

to do

函數(shù)

to do

對(duì)象

to do

時(shí)間所限,剩下幾個(gè)部分沒有寫完,后續(xù)補(bǔ)上,頂鍋遁走。

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

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

相關(guān)文章

  • 【譯】前端練級(jí)攻略

    摘要:由于系統(tǒng)變得越來(lái)越復(fù)雜,人們提出了稱為預(yù)處理器和后處理器的工具來(lái)管理復(fù)雜性。后處理器在由預(yù)處理器手寫或編譯后對(duì)應(yīng)用更改。我之前建議的文章,,也涵蓋了預(yù)處理器相關(guān)的知識(shí)。 譯者:前端小智 原文:medium.freecodecamp.org/from-zero-t… medium.freecodecamp.org/from-zero-t… 我記得我剛開始學(xué)習(xí)前端開發(fā)的時(shí)候。我看到了很多文章及...

    wuyumin 評(píng)論0 收藏0
  • 【譯】國(guó)外優(yōu)秀JavaScript資源推薦

    摘要:原文去年,我寫了一篇關(guān)于優(yōu)秀資源之獲取優(yōu)秀資源的博文。在谷歌瀏覽器的團(tuán)隊(duì)中,每天的工作是整天修補(bǔ)并了解哪些是可行的,哪些是沒有用的。你需要真正利用在中的特性,不用想就知道你將得到很多來(lái)源于各種寫作者,包括谷歌瀏覽器團(tuán)隊(duì)在內(nèi)的資源。 原文:http://code.tutsplus.com/articles/resources-for-staying-on-top-of-javascrip...

    ?xiaoxiao, 評(píng)論0 收藏0
  • 前端練級(jí)攻略(第二部分)

    摘要:是文檔的一種表示結(jié)構(gòu)。這些任務(wù)大部分都是基于它。這個(gè)實(shí)踐的重點(diǎn)是把你在前端練級(jí)攻略第部分中學(xué)到的一些東西和結(jié)合起來(lái)。一旦你進(jìn)入框架部分,你將更好地理解并使用它們。到目前為止,你一直在使用進(jìn)行操作。它是在前端系統(tǒng)像今天這樣復(fù)雜之前編寫的。 本文是 前端練級(jí)攻略 第二部分,第一部分請(qǐng)看下面: 前端練級(jí)攻略(第一部分) 在第二部分,我們將重點(diǎn)學(xué)習(xí) JavaScript 作為一種獨(dú)立的語(yǔ)言,如...

    BWrong 評(píng)論0 收藏0
  • ES6學(xué)習(xí)總結(jié)(一)

    摘要:可以通過(guò)調(diào)用方法將創(chuàng)建一個(gè)新的類型的值,這個(gè)值獨(dú)一無(wú)二,不與任何值相等。還可以使可擴(kuò)展,在中,表達(dá)式被標(biāo)準(zhǔn)化為構(gòu)造函數(shù)的一個(gè)方法,這意味著它是可擴(kuò)展的。 前端發(fā)展的太快了,快到ES6,ES7出來(lái)之后,今年已經(jīng)是ES8了,但是縱然前端發(fā)展很快,我們除了馬不停蹄的學(xué)習(xí)新的技術(shù)之外,也要沉下心來(lái),好好的潛心磨礪自己,本文是整理了自己學(xué)習(xí)ES6之后相關(guān)的知識(shí)要點(diǎn),寄希望于書之于筆,一來(lái)自己可以...

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

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

0條評(píng)論

閱讀需要支付1元查看
<