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

資訊專欄INFORMATION COLUMN

JavaScript 小知識(shí)點(diǎn)

馬永翠 / 789人閱讀

摘要:比如,構(gòu)造函數(shù)返回的數(shù)組都是空位。方法方法方法方法方法方法方法方法對(duì)空位的處理則是明確將空位轉(zhuǎn)為。在這些情況下,迭代器關(guān)閉。

原型鏈相關(guān)

最詳盡的 JS 原型與原型鏈終極詳解

isNaN()Number.isNaN() 的區(qū)別 isNaN()

是 ES1 規(guī)范;

是全局方法;

如果參數(shù)不是一個(gè) Number 類型,會(huì)先嘗試將參數(shù)轉(zhuǎn)化為數(shù)值,然后對(duì)轉(zhuǎn)換后的結(jié)果進(jìn)行是否是 NaN 的判斷;

Number.isNaN()

是 ES6(ES2015) 規(guī)范;

是 Number 對(duì)象的靜態(tài)方法;

只有參數(shù)為 NaN 是才會(huì)返回 true;

JavaScript 中的錯(cuò)誤類型

SyntaxError 解析代碼時(shí)發(fā)生的語(yǔ)法錯(cuò)誤;

ReferenceError 對(duì)象是引用一個(gè)不存在的變量時(shí)發(fā)生的錯(cuò)誤;

RangeError 對(duì)象是一個(gè)值超出有效范圍時(shí)發(fā)生的錯(cuò)誤;

一個(gè)數(shù)組長(zhǎng)度為負(fù)數(shù);

Number 對(duì)象的方法參數(shù)超出范圍;

函數(shù)堆棧超過(guò)最大值;

TypeError 對(duì)象是變量或參數(shù)不是預(yù)期類型時(shí)發(fā)生的錯(cuò)誤;

比如:對(duì)字符串、布爾值、數(shù)值等原始類型的值使用 new 命令;

URIError 對(duì)象是 URI 相關(guān)函數(shù)的參數(shù)不正確時(shí)拋出的錯(cuò)誤;

主要涉及 encodeURI()、decodeURI()、encodeURIComponent()decodeURIComponent()escape()、unescape()

EvalError eval 函數(shù)沒(méi)有正確執(zhí)行時(shí)拋出的錯(cuò)誤;已經(jīng)不再使用;

Error

自定義錯(cuò)誤

可以創(chuàng)建自定義錯(cuò)誤類,讓其集成 Error

參考鏈接

錯(cuò)誤處理機(jī)制

encodeURIencodeURIComponent 的區(qū)別 encodeURI

</>復(fù)制代碼

  1. encodeURI("http://example.com/test space")
  2. // http://example.com/test%20space
  3. // 對(duì)整個(gè) URL 進(jìn)行編碼,而 URL 的特定標(biāo)識(shí)符不會(huì)被轉(zhuǎn)碼
encodeURIComponent

</>復(fù)制代碼

  1. encodeURIComponent("http://example.com/test space")
  2. // http%3A%2F%2Fexample.com%2Ftest%20space
  3. // 對(duì)URL中的參數(shù)進(jìn)行編碼,因?yàn)閰?shù)也是一個(gè)URL,如果不編碼會(huì)影響整個(gè)URL的跳轉(zhuǎn)
參考鏈接

百分號(hào)編碼 Percent-encoding

[escape,encodeURI,encodeURIComponent有什么區(qū)別?

](https://www.zhihu.com/questio...

Array.from / 擴(kuò)展運(yùn)算符 ... / rest 參數(shù) ... 概念定義

ES6 中的三個(gè)點(diǎn) ... 有兩個(gè)名字:rest 參數(shù) / 擴(kuò)展運(yùn)算符

當(dāng)用在函數(shù)定義時(shí)的形參前面是,稱為 rest 參數(shù)。當(dāng)函數(shù)調(diào)用時(shí),用于接收不確定數(shù)量的參數(shù);

當(dāng)與結(jié)構(gòu)賦值組合使用時(shí),稱為 rest 參數(shù),用于接收剩余的值,存儲(chǔ)在數(shù)組中;

當(dāng)用在字符串或數(shù)組前面時(shí),稱為擴(kuò)展運(yùn)算符,將數(shù)組或字符串進(jìn)行拆解;

Array.from

Array.fromArray 對(duì)象的一個(gè)靜態(tài)方法??梢酝ㄟ^(guò)一下方式來(lái)創(chuàng)建數(shù)組對(duì)象:

偽數(shù)組對(duì)象(擁有一個(gè) length 屬性和若干索引屬性的任意對(duì)象);

可迭代對(duì)象;

Array.from 還有一個(gè)可選參數(shù) mapFn,可以在最后生成的數(shù)組上再執(zhí)行一次 map 方法后再返回;也就是說(shuō) Array.from(obj, mapFn, thisArg) 相當(dāng)于 Array.from(obj).map(mapFn, thisArg)

擴(kuò)展運(yùn)算符 ...

擴(kuò)展運(yùn)算符是一個(gè)運(yùn)算符,和 Array.from 最大的區(qū)別在于其只能從可迭代對(duì)象中進(jìn)行解構(gòu);

JavaScript 的迭代方法 forEach()

讓數(shù)組中每一項(xiàng)做一些事,不能被 break;

返回值:undefined

map()

讓數(shù)組對(duì)每一項(xiàng)進(jìn)行某種計(jì)算后產(chǎn)生一個(gè)新數(shù)組;

返回值:一個(gè)新數(shù)組;

filter()

篩選出數(shù)組中符合條件的項(xiàng),組成新數(shù)組;

返回值:一個(gè)新數(shù)組;

reduce()

對(duì)累加器和數(shù)組中的每個(gè)元素(從左到右)應(yīng)用一個(gè)函數(shù),將其減少為單個(gè)值;

返回值:函數(shù)累計(jì)處理的結(jié)果;

every()

檢測(cè)數(shù)組中的每一項(xiàng)是否都符合條件;

返回值:布爾值;

some()

檢測(cè)數(shù)組中是否有任意項(xiàng)符合條件;

返回值:布爾值;

對(duì)數(shù)組空位的處理

數(shù)組的空位指,數(shù)組的某一個(gè)位置沒(méi)有任何值。比如,Array構(gòu)造函數(shù)返回的數(shù)組都是空位。

ES5 對(duì)空位的處理

forEach(), filter(), reduce(), every()some()都會(huì)跳過(guò)空位。

map()會(huì)跳過(guò)空位,但會(huì)保留這個(gè)值

join()toString()會(huì)將空位視為undefined,而undefinednull會(huì)被處理成空字符串。

</>復(fù)制代碼

  1. // forEach方法
  2. [,"a"].forEach((x,i) => console.log(i)); // 1
  3. // filter方法
  4. ["a",,"b"].filter(x => true) // ["a","b"]
  5. // every方法
  6. [,"a"].every(x => x==="a") // true
  7. // reduce方法
  8. [1,,2].reduce((x,y) => return x+y) // 3
  9. // some方法
  10. [,"a"].some(x => x !== "a") // false
  11. // map方法
  12. [,"a"].map(x => 1) // [,1]
  13. // join方法
  14. [,"a",undefined,null].join("#") // "#a##"
  15. // toString方法
  16. [,"a",undefined,null].toString() // ",a,,"

ES6 對(duì)空位的處理

ES6 則是明確將空位轉(zhuǎn)為undefined。

Array.from 方法會(huì)將數(shù)組的空位,轉(zhuǎn)為 undefined,也就是說(shuō),這個(gè)方法不會(huì)忽略空位;

擴(kuò)展預(yù)算符 ... 也會(huì)將空位轉(zhuǎn)為 undefined

</>復(fù)制代碼

  1. Array.from(["a",,"b"]);
  2. // ["a", undefined, "b"]
  3. [...["a",,"b"]]
  4. // ["a", undefined, "b"]

copyWithin() 會(huì)連空位一起拷貝;

</>復(fù)制代碼

  1. [,"a",,"b"].copyWithin(2,0)
  2. // [,"a",,"a"]

fill() 將會(huì)視空位為正常的數(shù)組位置;

</>復(fù)制代碼

  1. new Array(3).fill("a");
  2. // ["a", "a", "a"]

for...of 循環(huán)也會(huì)遍歷空位;

</>復(fù)制代碼

  1. let arr = [, ,];
  2. for (let i of arr) {
  3. console.log(1);
  4. }
  5. // 1
  6. // 1

上面代碼中,數(shù)組arr有兩個(gè)空位,for...of并沒(méi)有忽略它們。如果改成map方法遍歷,空位是會(huì)跳過(guò)的。
但是,for...in 是會(huì)直接跳過(guò)空位,不會(huì)進(jìn)行遍歷的,需要特別留意;

entries()、keys()、values()、find()findIndex()會(huì)將空位處理成undefined。

</>復(fù)制代碼

  1. // entries()
  2. [...[,"a"].entries()] // [[0,undefined], [1,"a"]]
  3. // keys()
  4. [...[,"a"].keys()] // [0,1]
  5. // values()
  6. [...[,"a"].values()] // [undefined,"a"]
  7. // find()
  8. [,"a"].find(x => true) // undefined
  9. // findIndex()
  10. [,"a"].findIndex(x => true) // 0
參考鏈接

數(shù)組的擴(kuò)展

javaScript 循環(huán)語(yǔ)句的對(duì)比 for for...in

會(huì)跳過(guò)空值;

將會(huì)遍歷對(duì)象自身的所有可枚舉屬性以及對(duì)象從其構(gòu)造函數(shù)原型中繼承的屬性;

for...in 語(yǔ)句以原始插入順序迭代對(duì)象的可枚舉屬性,不能依賴于迭代的表面有序性;

for...in 不應(yīng)該用于迭代 Array,一是其順序不確定,二是其會(huì)迭代所有對(duì)象和對(duì)象構(gòu)造函數(shù)原型鏈里的可迭代屬性;

for...of

不會(huì)跳過(guò)空值;

在可迭代對(duì)象(包括 Array,Map,Set,String,TypedArray,arguments 對(duì)象等等)上創(chuàng)建一個(gè)迭代循環(huán),調(diào)用自定義迭代鉤子,并為每個(gè)不同屬性的值執(zhí)行語(yǔ)句,這里特別留意,Object 不是一個(gè)可迭代對(duì)象;

對(duì)于for...of的循環(huán),可以由break, continue, throwreturn終止。在這些情況下,迭代器關(guān)閉。

for...of 語(yǔ)句遍歷可迭代對(duì)象定義要迭代的數(shù)據(jù);

ES6 中的 Class 一個(gè)問(wèn)題,為何 SubClass.__proto__ === SuperClass?

可能的回答:__proto__ 屬性與 ES6 classes 的繼承

再一個(gè)問(wèn)題,ES6 中的 Class到底更接近之前的 Object 還是 Fcnction?

經(jīng)過(guò)測(cè)試,確定是 Function;

super的一些小知識(shí)點(diǎn)

根據(jù)調(diào)用位置的不同,super 關(guān)鍵字的含義不同;

在子類的構(gòu)造函數(shù)中使用 super()super代表了父類的構(gòu)造函數(shù),此時(shí),父類構(gòu)造函數(shù)中的 this 指向的是子類;

在子類的實(shí)例方法中使用 supersuper指向父類的 prototype 對(duì)象,調(diào)用父類方法時(shí),調(diào)用的是父類的原型鏈上的方法;此時(shí),該方法中的 this 指向的是子類的實(shí)例;

在子類的靜態(tài)方法中使用 super,super指向父類 ,調(diào)用父類方法時(shí),調(diào)用的是父類的靜態(tài)方法;此時(shí),該方法中的 this 指向的是子類;

原生構(gòu)造函數(shù)的繼承

對(duì)原生構(gòu)造函數(shù)使用 apply 不會(huì)更改其 this,也就是說(shuō),原生構(gòu)造函數(shù)的 this 無(wú)法綁定,從而導(dǎo)致拿不到內(nèi)部屬性;

究其原因,是因?yàn)?ES5 中的構(gòu)造函數(shù)是先新建子類的實(shí)例對(duì)象 this,再將父類的屬性添加到子類上,由于父類的內(nèi)部屬性無(wú)法獲取,導(dǎo)致無(wú)法繼承原生的構(gòu)造函數(shù);

ES6 允許繼承原生構(gòu)造函數(shù)定義子類,ES6 是先新建父類的實(shí)例對(duì)象 this,然后再用子類的構(gòu)造函數(shù)修飾 this,使得父類的所有行為都可以繼承;

注意:繼承 Object 的子類,會(huì)有一個(gè)行為差異;ES6 改變了 Object 構(gòu)造函數(shù)的行為,一旦發(fā)現(xiàn) Object 方法不是通過(guò) new Object() 這種形式調(diào)用,ES6 規(guī)定 Object 構(gòu)造函數(shù)忽略參數(shù);

修飾器

呃,待續(xù)。

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

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

相關(guān)文章

  • 如何正確學(xué)習(xí)JavaScript

    摘要:然而,雖然先生對(duì)無(wú)所不知,被譽(yù)為世界的愛因斯坦,但他的語(yǔ)言精粹并不適合初學(xué)者學(xué)習(xí)。即便如此,在后面我還是會(huì)建議把當(dāng)做補(bǔ)充的學(xué)習(xí)資源。但目前為止,依然是學(xué)習(xí)編程的好幫手。周正則表達(dá)式,對(duì)象,事件,閱讀權(quán)威指南第,,,章。 既然你找到這篇文章來(lái),說(shuō)明你是真心想學(xué)好JavaScript的。你沒(méi)有想錯(cuò),當(dāng)今如果要開發(fā)現(xiàn)代網(wǎng)站或web應(yīng)用(包括互聯(lián)網(wǎng)創(chuàng)業(yè)),都要學(xué)會(huì)JavaScript。而面對(duì)泛...

    canger 評(píng)論0 收藏0
  • 前端知識(shí)--TypeSript和JavaScript到底是什么關(guān)系?

    摘要:想學(xué)好前端,真的要主動(dòng),然后對(duì)所有的英文文檔耐心一點(diǎn)。在年月日,國(guó)際組織發(fā)布了的第六版,該版本正式名稱為,但通常被稱為或者。自此,每年發(fā)布一次新標(biāo)準(zhǔn)。但保留了用于依賴注入的構(gòu)造函數(shù)參數(shù)類型。必須在構(gòu)造函數(shù)中聲明屬性,而不是在類的代碼體中。 從 TypeScript 到 ES6 到 ES5 在我初學(xué)前端的很長(zhǎng)一段時(shí)間,不愿意碰git,不愿意碰框架,總是嫌麻煩,連ES6也沒(méi)有怎么去弄明白...

    sixleaves 評(píng)論0 收藏0
  • 前端基礎(chǔ)入門

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

    shinezejian 評(píng)論0 收藏0
  • 關(guān)於Javascript基本類型和引用類型知識(shí)

    摘要:變量有兩種不同的數(shù)據(jù)類型基本類型,引用類型。知識(shí)一基本類型值就是簡(jiǎn)單的數(shù)據(jù)段引用類型值保存的是對(duì)象的引用,不是實(shí)際的對(duì)象。 ECMAScirpt 變量有兩種不同的數(shù)據(jù)類型:基本類型,引用類型。 基本的數(shù)據(jù)類型有:undefined,boolean,number,string,null. 基本類型的訪問(wèn)是按值訪問(wèn)的,就是說(shuō)你可以操作保存在變量中的實(shí)際的值。JavaScript中除了上面的...

    iKcamp 評(píng)論0 收藏0
  • JavaScript 模式》識(shí)點(diǎn)抄本(下)

    摘要:缺點(diǎn)不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合適。預(yù)防低水平人員帶來(lái)的風(fēng)險(xiǎn)。開閉原則,高拓展性。這里的訂閱者稱為觀察者,而被觀察者稱為發(fā)布者,當(dāng)一個(gè)事件發(fā)生,發(fā)布者會(huì)發(fā)布通知所有訂閱者,并常常以事件對(duì)象形式傳遞消息。 介紹 最近開始給自己每周訂個(gè)學(xué)習(xí)任務(wù),學(xué)習(xí)結(jié)果反饋為一篇文章的輸出,做好學(xué)習(xí)記錄。 這一周(02.25-03.03)我定的目標(biāo)是《JavaScript 模式》...

    xiguadada 評(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

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

0條評(píng)論

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