摘要:前言這里我們不討論作用域鏈的問題,這些問題您可以看下我之前寫的東西,通過這一段代碼,讓我們重新認識。這回我們主要來分享一下,中作用域的創建方式。立即執行函數是個不錯的選擇,但具名的立即執行函數可以讓代碼本身更具有可讀性,是個最佳實踐。
前言
這里我們不討論作用域鏈的問題,這些問題您可以看下我之前寫的東西,通過這一段代碼,讓我們重新認識JavaScript。
這回我們主要來分享一下,JavaScript中作用域的創建方式。
通過理解代碼來記住知識點是最快的,面試官問道類似的問題的時候,舉個代碼的例子就大家都懂了,勝過任何含糊的概念描述,所以我們來看一下這個代碼的例子吧。
rank-01請思考輸出結果,for循環的{}能創建一個作用域嗎?
for (var i = 0; i < 2; i++) { console.log("in for:"+i); } console.log("out for:"+i);rank-02
請思考代碼運行結果,function應該能創建作用域吧?
function forscope(){ for (var i = 0; i < 2; i++) { console.log("in for:"+i); } }; forscope(); console.log("out for:"+i);rank-03
為什么這樣寫會更好呢?
(function(){ for (var i = 0; i < 2; i++) { console.log("in for:"+i); } })(); console.log("out for:"+i);rank-04-a
老外說,這樣子寫才是最佳實踐,您看出來門道了嗎?
(function forscope(){ for (var i = 0; i < 2; i++) { console.log("in for:"+i); } })(); console.log("out for:"+i);rank-04-b
這樣寫太鬼了吧?
try{ undefined(); }catch(i){ for (i = 0; i < 2; i++) { console.log("in for:"+i); } } console.log("out for:"+i);rank-es6-01
現在能體會到es6中let存在的意義了吧?
for (let i = 0; i < 2; i++) { console.log("in for:"+i); } console.log("out for:"+i);rank-es6-02
據說這才是最佳實踐!
{ let i; for (i = 0; i < 2; i++) { console.log("in for:"+i); } } console.log("out for:"+i);總結
function,try catch均可以創建作用域,可以使用它們來更好地保護代碼細節,一般還是用function,try catch一般是代碼轉換器會用的。
立即執行函數(function(){...})();是個不錯的選擇,但具名的立即執行函數可以讓代碼本身更具有可讀性,是個最佳實踐(function forscope(){...})();。
es6中let可以隱式地和最近的{}一起創建一個作用域,但顯示地創建能夠方便之后代碼塊的移動,是個最佳實踐。
其他參考書
《你不知道的JavaScript(上卷)》第一部分,亞馬遜電子書9.9元,強力推薦
網站
在線es6編輯器,https://babeljs.io/repl/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79341.html
摘要:也毫不例外,但在中作用域的特性與其他高級語言稍有不同,這是很多學習者久久難以理清的一個核心知識點。主要使用的是函數作用域。 關于作用域:About Scope 作用域是程序設計里的基礎特性,是作用域使得程序運行時可以使用變量存儲值、記錄和改變程序的狀態。JavaScript 也毫不例外,但在 JavaScript 中作用域的特性與其他高級語言稍有不同,這是很多學習者久久難以理清的一個核...
摘要:查詢是在作用域鏈中,一級級的往上查找該變量的引用。作用域和作用域鏈作用域的概念,應該兩張圖幾句話就能解釋吧。這個建筑代表程序中的嵌套作用域鏈。一層嵌一層的作用域形成了作用域鏈,變量在作用域鏈中的函數內得到了自己的定義。 javascript作用域和閉包之我見 看了《你不知道的JavaScript(上卷)》的第一部分——作用域和閉包,感受頗深,遂寫一篇讀書筆記加深印象。路過的大牛歡迎指點...
摘要:閉包利用的,其實就是作用域嵌套情況下,內部作用域可以訪問外部作用域這一特性。之所以要將閉包和垃圾回收策略聯系在一起,是因為這涉及到閉包的一些重要特性,如變量暫時存儲和內存泄漏。因為匿名函數回調的閉包實際引用的是變量,而非變量的值。 本文旨在總結在js學習過程中,對閉包的思考,理解,以及一些反思,如有不足,還請大家指教 閉包---closure 閉包是js中比較特殊的一個概念,其特殊之處...
摘要:寫在前面對于一個前端開發者,應該沒有不知道作用域的。欺騙詞法作用域有兩個機制可以欺騙詞法作用域和。關于你不知道的的第一部分作用域和閉包已經結束了,但是,更新不會就此止住未完待續 這是《你不知道的JavaScript》的第一部分。 本系列持續更新中,Github 地址請查閱這里。 寫在前面 對于一個前端開發者,應該沒有不知道作用域的。它是一個既簡單有復雜的概念,簡單到每行代碼都有它的影子...
閱讀 1458·2021-11-24 09:39
閱讀 1775·2021-11-22 15:25
閱讀 3728·2021-11-19 09:40
閱讀 3283·2021-09-22 15:31
閱讀 1288·2021-07-29 13:49
閱讀 1192·2019-08-26 11:59
閱讀 1308·2019-08-26 11:39
閱讀 919·2019-08-26 11:00