讀書筆記 深入理解ES6(一)

2022-10-10 11:27:16 字數 1321 閱讀 3213

開篇詞:這是一篇關於《深入理解es6》的讀書筆記的第一篇,主要是讀第一章的筆記。該筆記基本上只記錄思路和核心知識點,具體內容可以參考書上的**和細節講解,以求達到提綱挈領和後期方便溫習的作用。

1. var宣告和變數提公升(hoisting)機制。

該節中,主要講述了作為原來es5中經常使用到的關鍵字: var 來宣告變數的一些小的缺陷,包括它宣告的變數可以在其他位置也可以讀取等帶來的一些問題。因為var宣告的變數通常有自動提公升(hoisting)的機制,所以在**塊中,即使還沒有到宣告變數的位置,但是執行流仍然可以知道已經有了這個變數,只不過值是 undefined。

2. 塊級宣告。

該節中,主要講述了 let 和 const 關鍵字宣告變數的一些規則,以及和 var 宣告變數的不同之處。let 宣告的變數只在宣告的塊內(**中為大括號)可以讀到,而且 let 宣告的變數不能重複宣告,否則會報錯。const 宣告的變數值是常量,也就是說它宣告乙個變數後,這個變數的值是不能修改的。還有乙個「臨時死區」的概念,這個可以理解為,當由使用 var 改為使用 let 或者 const 後,原來那部分可以使用提公升(hoisting)的地方,現在不能提公升了,所以就成了「臨時死區」。

3. 迴圈中的塊作用域繫結。

該節中,以乙個 for 迴圈函式開始,先講述了如果按照慣例思維,使用 var i = 0; i < 10; i ++ 條件的話,在最後塞進陣列後,列印出來的值其實並不是正常思維下的 0,1,..., 9 ,而是 10 個 10,這個是原來js的乙個漏洞,或者說設計的不好的地方,如果用原來的規範的話,必須使用立即執行函式,才能最終實現陣列存入 0, 1, ... , 9的預期結果。那麼,在es6的規範中,修復了這乙個缺陷,即使用 let 宣告,或者 const 宣告的話,那麼 i 的值每次迴圈的時候都會是乙個新的繫結,而不會使用原來的繫結,這樣其實就實現了新的值被加入到陣列中,解決了原來 var 迴圈宣告時的乙個缺陷。

4. 全域性塊作用域繫結。

該節中,主要講了 var let const 和 window 的關係。使用 var 宣告全域性變數的時候,如果這個變數已經是 window 物件上屬性了,這個宣告仍然是有效的,但是容易和原來 window 已有的內建物件產生衝突;現在呢,如果使用 let 或者 const 來宣告乙個全域性變數的話,那麼這個時候和 window 物件上原來的屬性就是不會相互覆蓋,相當於宣告的變數更加精準了。

(本節完)

讀書筆記 深入理解ES6 (二)

1.更好的unicode支援。先說一下前提,在字串中,字串裡面的字元有兩種 一種是有乙個編碼單元16位表示的bmp字元 另一種是由兩個編碼單元32位表示的輔助平面字元。這兩種字元是不一樣的。1.1normalize 方法。這個方法接受乙個可選的字串,然後將該字串轉化為相應的標準unicode的形式,...

深入理解ES6讀書筆記3 函式

引數預設值 未提供引數,或將引數值指定為undefined時,預設值會被使用。function add a,b 2,c 3 add 1 6 add 1,2 6 add 1,undefined,4 7 add 1,null,4 引數預設值表示式 引數預設值除了是基本型別的值,也可以執行乙個函式來產生預...

深入理解ES6讀書筆記10 模組

模組使用不同方式載入的js檔案。模組化分為匯出 export 與匯入 import 兩個模組。特點 1 模組自動開啟嚴格模式 2 每乙個模組內宣告的變數都是區域性變數 3 模組中可以匯入和匯出各種型別的變數 4 每乙個模組只載入一次 是單例的 若再去載入同目錄下同檔案,直接從記憶體中讀取 5 對於需...