摘要:的使用我們知道主要有三個特性聲明的變量的作用域是塊級的中只有全局和函數作用域不能重復聲明已存在的變量有暫時死區,不會被提升。的巧用我們知道引入了一個新的數據類型,可以創建一個獨一無二的值但并不是字符串。
let 的使用
我們知道 let 主要有三個特性:
let 聲明的變量的作用域是塊級的 (es5中只有全局和函數作用域)
let 不能重復聲明已存在的變量;
let 有暫時死區,不會被提升。
我們早期面試的時候,經常會考的一道題目是:
// 代碼段1 var liList = document.querySelectorAll("li") // 共5個li for( var i=0; i大家都知道依次點擊 li 會打印出 5 個 5。如果把 var i 改成 let i,就會分別打印出 0、1、2、3、4:
// 代碼段2 var liList = document.querySelectorAll("li") // 共5個li for( let i=0; i然而,你會發現 for( let i=0; i
于是我們方方老師大佬去看 MDN 的例子,發現雞賊的 MDN 巧妙地避開了這個問題,它的例子是這樣的:
它直接在另外聲明了一個 j 來保存, 為什么不直接用 i 呢?MDN 為了簡化知識,隱瞞了什么?
經過我們方方老師大佬饑渴精神,不斷的查資料,最后他總結這么幾句自己的理解:
for( let i = 0; i< 5; i++) 這句話的圓括號之間,有一個隱藏的作用域
for( let i = 0; i< 5; i++) { 循環體 } 在每次執行循環體之前,JS 引擎會把 i 在循環體的上下文中重新聲明及初始化一次。
也就是說上面的代碼段2可以近似近似近似地理解為:
// 代碼段3 var liList = document.querySelectorAll("li") // 共5個li for( let i=0; i那樣的話,5 次循環,就會有 5 個不同的 i,console.log 出來的 i 當然也是不同的值。
再加上隱藏作用域里的 i,一共有 6 個 i。
這就是 MDN 加那句 let j = i 的原因:方便新人理解。
總得來說就是 let/const 在與 for 一起用時,會有一個 perIterationBindings 的概念(一種語法糖)。
let 到底有沒有提升之前我寫過一篇 《你一度模糊的javascript執行上下文詳解》, 說到js在一段
當然這個除了面試感覺沒啥軟用,但這能告訴你 get, set有什么用。
Symbol的巧用我們知道:ES 6 引入了一個新的數據類型 Symbol, Symbol 可以創建一個獨一無二的值(但并不是字符串)。
假如現在有一個對象,里面有一個私有屬性,只能自己內部使用,外部調用不到,這時我們可以利用 Symbol來做:如下:
{ let a = Symbol(); let obj = { name: "小智", age: 18, [a]: "這個是私有屬性" } window.obj = obj; }如下,我有在外部無語你怎么用,都是調用不到 “這個是私有屬性”,你可能會說這個有啥用,我只能回答你裝x用的,面試可能也會問你 我們如何弄一個隱藏屬性呢?答案就是 Symbol ,滿婚滿婚滿婚。
以上,就是 Symbol 的簡述,更詳細更權威的知識參考下面的自學鏈接。
MDN: Symbol - JavaScript
阮一峰:ECMAScript 6入門參考:
我用了兩個月的時間才理解 let一個笨笨的碼農,我的世界只能終身學習
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/98136.html
摘要:大師錯,這是你的第二個誤區碎片時間碎片學習青年這有什么問題嗎知乎朋友圈頭條很多文章我看起來都很有道理啊,而且學的很快大師標題黨震驚黨雞湯文養生文我有一個朋友文。。。。。。 摘要: 大師:很簡單,我這里有一份佛系月薪 5 萬指南,我看你骨骼清奇、腦門光亮,一看就是將要大富大貴之人,這份指南可以助你快速實現小目標! showImg(https://segmentfault.com/img/...
摘要:大師錯,這是你的第二個誤區碎片時間碎片學習青年這有什么問題嗎知乎朋友圈頭條很多文章我看起來都很有道理啊,而且學的很快大師標題黨震驚黨雞湯文養生文我有一個朋友文。。。。。。 摘要: 大師:很簡單,我這里有一份佛系月薪 5 萬指南,我看你骨骼清奇、腦門光亮,一看就是將要大富大貴之人,這份指南可以助你快速實現小目標! showImg(https://segmentfault.com/img/...
摘要:并且,越是臨近項目截止日期,越是需要工作更長的時間。真正優秀的程序員善于與人交往,但大多數程序員缺乏這些能力。項目經驗以上的內容如果都精通了,也算是個比較厲害的程序員了。但是對程序員來說,項目經驗更加重要。 無論做什么工作,?都希望能做到最好,?就像參與一款游戲,?每個人都希望能贏到最后.程序員工作自然也會有其秘籍,?讓我們更快的實現目標。 身體 身體看似最不重要,?其實不...
閱讀 2812·2019-08-30 15:55
閱讀 2858·2019-08-30 15:53
閱讀 2296·2019-08-26 13:47
閱讀 2558·2019-08-26 13:43
閱讀 3157·2019-08-26 13:33
閱讀 2805·2019-08-26 11:53
閱讀 1798·2019-08-23 18:35
閱讀 801·2019-08-23 17:16