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

資訊專(zhuān)欄INFORMATION COLUMN

新手開(kāi)發(fā)中常用ES6基礎(chǔ)知識(shí)總結(jié)

Paul_King / 2270人閱讀

摘要:感覺(jué)對(duì)我這種沒(méi)實(shí)習(xí)沒(méi)工作的新手,雖然一些高級(jí)的功能暫時(shí)用不上,但是一些基礎(chǔ)的知識(shí)還是為平時(shí)的開(kāi)發(fā)提供了巨大的便利。學(xué)習(xí)告一段落,現(xiàn)在結(jié)合平時(shí)的開(kāi)發(fā),總結(jié)一些常用的知識(shí)。日常開(kāi)發(fā)中,塊級(jí)作用域中使用的變量,盡量使用或者聲明。使用時(shí),進(jìn)行合并。

很早之前就學(xué)過(guò)TypeScript和ES6,后來(lái)做項(xiàng)目的時(shí)候零零散散用了些。這幾天又系統(tǒng)地把ES6的知識(shí)看了一遍。感覺(jué)對(duì)我這種沒(méi)實(shí)習(xí)沒(méi)工作的新手,雖然一些高級(jí)的功能暫時(shí)用不上,但是一些基礎(chǔ)的知識(shí)還是為平時(shí)的開(kāi)發(fā)提供了巨大的便利。ES6學(xué)習(xí)告一段落,現(xiàn)在結(jié)合平時(shí)的開(kāi)發(fā),總結(jié)一些常用的知識(shí)。

let與const及其相關(guān) 塊級(jí)作用域

ES6新增了塊級(jí)作用域,總結(jié)一句話(huà)大致就是:大括號(hào){}包起來(lái)的代碼塊基本山都可以當(dāng)做塊級(jí)作用域。

常見(jiàn)的有

直接使用{}包起來(lái):

 {
var a = 4
 }

函數(shù)體大括號(hào),if-else大括號(hào),for循環(huán)大括號(hào),switch大括號(hào),try-catch大括號(hào)等。
需要注意的是,for循環(huán),每一次循環(huán)時(shí)的{}都是一個(gè)獨(dú)立的塊級(jí)作用域。

for(let i=0; a < 5; i++){
   let j = i
}

上面代碼循環(huán)了五次,實(shí)際上有五個(gè)獨(dú)立的j

日常開(kāi)發(fā)中,我們就可以利用這個(gè)特性,來(lái)創(chuàng)建塊級(jí)作用域了。

塊級(jí)作用域變量letconst

使用letconst聲明的變量只在當(dāng)前塊級(jí)作用域生效,出了這個(gè)代碼塊,就無(wú)法訪問(wèn)。

 {
   let a = 5
 }
console.log(a) //  Uncaught ReferenceError: a is not defined

日常開(kāi)發(fā)中,塊級(jí)作用域中使用的變量,盡量使用let或者const聲明。

需要注意的問(wèn)題:

letconst變量一定要先聲明,再使用,避免出錯(cuò)。不要試圖利用變量提升的特性。

const聲明變量時(shí),一定要初始化,否則會(huì)報(bào)錯(cuò)。let建議也在聲明時(shí)初始化。

const聲明的變量一旦初始化,以后就不可以在進(jìn)行賦值操作,但可以對(duì)其引用的對(duì)象進(jìn)行更改。

const noChangeMe;    // Uncaught SyntaxError: Missing initializer in const declaration
const noChangeMe = [1,2,4]
noChangeMe = [2, 3]    // Uncaught TypeError: Assignment to constant variable
noChangeMe[100] = 100        // everything is OK

letconst聲明的變量不能再重復(fù)聲明。
雖然var可以無(wú)限次重復(fù)聲明,但是并不適用于這兩個(gè)新的聲明方式。

let a = 1
let a = 2        // Identifier "a" has already been declared

不要用window.xxx去調(diào)用letconst聲明的變量
ES6規(guī)定,letconstclass聲明的全局變量,不屬于頂層對(duì)象的屬性。

String 使用反引號(hào)"`"

使用``將字符串包起來(lái),可以解決下面的問(wèn)題:

字符串不能換行,如果換行只能使用+號(hào)

字符串中的引號(hào)如果和最外層相同,需要進(jìn)行轉(zhuǎn)義

字符串中插入變量,需要用+號(hào)
以前這樣的寫(xiě)法:

var name = "world"
var str = "小明說(shuō):"hello, " + name + """ // 小明說(shuō):"hello, world"

現(xiàn)在可以方便的寫(xiě)作:

var name = "world"
str str = `小明說(shuō):"hello, ${name}"`

總的來(lái)說(shuō),有三個(gè)好處:

不怕字符串中出現(xiàn)的引號(hào);

不怕?lián)Q行,反引號(hào)包起來(lái)的字符串可以隨便換行;

使用${}將變量或表達(dá)式包起來(lái)直接放在字符串中,不用寫(xiě)很多+

遍歷字符串

使用for...of代替for循環(huán):

var string = "string"
for(var i of string) {
    console.log(i)
}
includes(),startsWidth(),endsWidth()

不用使用indexOf()判斷字符串中是否包含某個(gè)值了,使用includes():

var string = "string"
    string.includes("i", 0)            // true

includes第二個(gè)參數(shù)表示查找的起始索引。
還可以使用startsWidth()endsWidth()判斷字符串是否以某些字符開(kāi)始或結(jié)尾。

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

方便地設(shè)置函數(shù)參數(shù)的默認(rèn)值

function print( a = 2 ){
    console.log(a)
}
print()    //2
擴(kuò)展運(yùn)算符...獲取其余參數(shù)

可以使用...加上變量名保存其他參數(shù)全部數(shù)量。
當(dāng)只知道函數(shù)的前幾個(gè)具體參數(shù),不確定之后會(huì)有多少個(gè)參數(shù)傳入時(shí),可以使用...把其他傳入的參數(shù)保存到一個(gè)數(shù)組中。

function print(value1, value2, ...values){
    console.log(values.join("--"))
}
print(1, 2, "參數(shù)3")        // 參數(shù)3
print(1, 2, "參數(shù)3", "參數(shù)4", "參數(shù)5")    // print(1, 2, "參數(shù)3", "參數(shù)4", "參數(shù)5")
使用箭頭函數(shù)

使用箭頭函數(shù)有兩個(gè)好處:

代碼更加簡(jiǎn)潔

靜態(tài)綁定this
箭頭函數(shù)中,this指向的是定義箭頭函數(shù)的對(duì)象中的this

var name = "outer"
var obj = {
name: "inner",
func: () => {
    console.log(this.name)
}
}
var obj2 = {
name: "inner",
func: function() {
    console.log(this.name)
}
}
obj.func() // "outer"
obj2.func()    // "inner"

第一個(gè)使用了箭頭函數(shù),由于箭頭函數(shù)的this與其所在環(huán)境中的this相同,也就是與obj的this相同,而obj處于全局環(huán)境的活動(dòng)對(duì)象中,this指向全局對(duì)象,這里指window,所以輸出outer

注意:obj對(duì)象的this與它的屬性中的this不一樣。

第二個(gè)使用了尋常函數(shù),作為obj2的一個(gè)屬性,func方法中的this指向了所在的對(duì)象。輸出inner

數(shù)組 使用Array.from()把類(lèi)數(shù)組對(duì)象轉(zhuǎn)為數(shù)組

一般來(lái)說(shuō),含有length屬性的對(duì)象就可以當(dāng)作類(lèi)數(shù)組對(duì)象。平時(shí)獲取多個(gè)DOM對(duì)象后,不能使用數(shù)組中的很多方法。我們可以使用Array.from方便的轉(zhuǎn)換為數(shù)組,。

var divs = Array.from(document.querySelectorAll("div"))
divs.forEach((value, index) => {})
使用fill()初始化數(shù)組

想要以某個(gè)值初始化數(shù)組,需要遍歷。而使用fill()方法,就方便了很多。

var arr = new Array(100)  // 建立一個(gè)100元素的數(shù)組
arr.fill("初始值", 0, arr.length)

第一個(gè)參數(shù)是要填充的值,后面兩個(gè)與一般的數(shù)組方法一樣,起始索引和結(jié)束索引(不包括)。

使用includes方法

和字符串的includes方法一樣,看數(shù)組中是否有給定值。

對(duì)象 使用簡(jiǎn)單的屬性表示和方法表示
var name = "John"
var a = {
    name: name,
    sayName: function(){ console.log(this.name) }
}

改寫(xiě)為:

var name = "John"
var a = {
    name,
    sayName () { console.log(this.name) }
}
記得Object.is()這個(gè)方法

其與===的差別:

NaN === NaN // false
Object.is(NaN, NaN) // true

-0 === +0   //true
Object.is(+0, -0)        // false
Object.is(+0, 0)        / true
Object.is(-0, 0)        / false

可以這樣理解,遵循的原則: 是同一個(gè)東西就要相等。
NaNNaN就是一個(gè)東西,而-0帶了個(gè)負(fù)號(hào),和0+0不一樣。0+0相同就像1+1相同一樣。

使用Object.assign()合并多個(gè)對(duì)象

Object.assign()是用來(lái)合并對(duì)象的。assign,譯作分配,指派。這個(gè)方法本意是將某些對(duì)象自己的屬性拷貝到目標(biāo)對(duì)象上。它不回去復(fù)制繼承來(lái)的屬性。
比如可以在定義某個(gè)配置的時(shí)候,定義一個(gè)基礎(chǔ)配置,在定義兩個(gè)不同情況下的配置。使用時(shí),進(jìn)行合并。

var pathConfig = {
    path: "style/images"
}
var devConfig = {
    baseUrl: "http://localhost:8080/"
}
var buildConfig = {
    baseUrl: "https://192.128.0.2"
}
// 使用時(shí),合并
var mode = "dev"
var config = Object.assign({}, pathConfig, mode === "dev" ? devConfig : buildConfig)

只是舉個(gè)例子。

Object.keys()Object.values()Object.entries

這三個(gè)方法返回對(duì)象自身的,可枚舉的,屬性名為字符串的屬性相關(guān)的東西,分別為:

Object.keys(): 屬性名組成的數(shù)組

Object.values(): 屬性值組成的數(shù)組

Object.entries: ["key", "value"]組成的數(shù)組。

var john = {
    name: "John",
    age: 12
}
Object.keys(john) //  ["name", "age"]
Object.values(john) //  ["John", 12]
Object.entries(john) // [["name", "John"], ["age", 12]]
常用...運(yùn)算符

前面在函數(shù)的剩余參數(shù)處理中提到了...擴(kuò)展運(yùn)算符。總結(jié)了一下,感覺(jué)有兩個(gè)用法:

用來(lái)讀取數(shù)組或者對(duì)象的時(shí)候,是把數(shù)組或?qū)ο蠼o擴(kuò)展開(kāi);

用來(lái)給對(duì)象或者數(shù)組賦值的時(shí)候,自動(dòng)給對(duì)象或數(shù)組添加屬性或元素。

用來(lái)讀取

讀取的時(shí)候就是把數(shù)組或者對(duì)象給擴(kuò)展開(kāi)來(lái)。

var a = [...[1,2,3], 4]        // 把數(shù)組的每一項(xiàng)都展出來(lái)
a  // [1, 2, 3, 4]
var obj = {
    name: "John",
    age: 12
}
var newObj  = {...obj, job: "teacher" }        // 把某個(gè)屬性展出來(lái)
newObj // {name: "John", age: 12, job: "teacher"}

所以可以很方便的用來(lái)擴(kuò)展,合并數(shù)組或?qū)ο蟆?/p> 用作賦值

用作賦值的時(shí)候,是用作解構(gòu)賦值,含義就是把等號(hào)右邊表達(dá)式的剩余屬性或數(shù)組項(xiàng)都放到...后面的變量里。

var a, restB
[a, ...restB] = [1, 3, 5]
a // 1
restB //    [3, 5]

var c, restD
{ name, ...restD } = {name: "John", age: 12, job: "teacher"}
name  //  "John"  是一個(gè)屬性的值
restD    //     { c, ...restD } = {name: "John", age: 12, job: "teacher"} 是一個(gè)對(duì)象

對(duì)于對(duì)象的解構(gòu)賦值,會(huì)把對(duì)應(yīng)不到的屬性全部放進(jìn)...后面的變量對(duì)象中。

注意:因?yàn)槭前咽O聸](méi)人要的屬性或者數(shù)組項(xiàng)都收下,所以...應(yīng)該放在數(shù)組或者對(duì)象中的最后,且只能有一個(gè)。

本文首發(fā)于我的博客
如有錯(cuò)誤,歡迎指出!

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

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

相關(guān)文章

  • JavasScript重難點(diǎn)知識(shí)

    摘要:忍者級(jí)別的函數(shù)操作對(duì)于什么是匿名函數(shù),這里就不做過(guò)多介紹了。我們需要知道的是,對(duì)于而言,匿名函數(shù)是一個(gè)很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個(gè)供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果...

    forsigner 評(píng)論0 收藏0
  • 前端相關(guān)大雜燴

    摘要:希望幫助更多的前端愛(ài)好者學(xué)習(xí)。前端開(kāi)發(fā)者指南作者科迪林黎,由前端大師傾情贊助。翻譯最佳實(shí)踐譯者張捷滬江前端開(kāi)發(fā)工程師當(dāng)你問(wèn)起有關(guān)與時(shí),老司機(jī)們首先就會(huì)告訴你其實(shí)是個(gè)沒(méi)有網(wǎng)絡(luò)請(qǐng)求功能的庫(kù)。 前端基礎(chǔ)面試題(JS部分) 前端基礎(chǔ)面試題(JS部分) 學(xué)習(xí) React.js 比你想象的要簡(jiǎn)單 原文地址:Learning React.js is easier than you think 原文作...

    fuyi501 評(píng)論0 收藏0
  • 基礎(chǔ)知識(shí) - 收藏集 - 掘金

    摘要:本文是面向前端小白的,大手子可以跳過(guò),寫(xiě)的不好之處多多分鐘搞定常用基礎(chǔ)知識(shí)前端掘金基礎(chǔ)智商劃重點(diǎn)在實(shí)際開(kāi)發(fā)中,已經(jīng)非常普及了。 JavaScript字符串所有API全解密 - 掘金關(guān)于 我的博客:louis blog SF專(zhuān)欄:路易斯前端深度課 原文鏈接:JavaScript字符串所有API全解密 本文近 6k 字,讀完需 10 分鐘。 字符串作為基本的信息交流的橋梁,幾乎被所有的編程...

    wdzgege 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

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

    princekin 評(píng)論0 收藏0
  • 前端基礎(chǔ)入門(mén)

    摘要:手把手教你做個(gè)人火的時(shí)候,隨便一個(gè)都能賺的盆滿(mǎn)缽滿(mǎn),但是,個(gè)人沒(méi)有服務(wù)端,沒(méi)有美工,似乎就不能開(kāi)發(fā)了,真的是這樣的嗎秘密花園經(jīng)典的中文手冊(cè)。涵蓋前端知識(shí)體系知識(shí)結(jié)構(gòu)圖書(shū)推薦以及入門(mén)視頻教程,全的簡(jiǎn)直不要不要的了。 JavaScript 實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制指定區(qū)域文本 html5 的 webAPI 接口可以很輕松的使用短短的幾行代碼就實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制區(qū)域文本的功能,不需要依賴(lài) flash。...

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

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

0條評(píng)論

Paul_King

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<