摘要:為了更好的講解構(gòu)造函數(shù)原型原型鏈等,我們需要復(fù)習(xí)一下函數(shù)的一些基礎(chǔ)知識。閉包在復(fù)習(xí)了函數(shù)的相關(guān)基礎(chǔ)知識之后,我們終于可以進入閉包。我們可以這樣理解閉包,首先,閉包是一個函數(shù),是一個什么樣子的函數(shù)呢是一個可以訪問另一個函數(shù)中變量的函數(shù)。
為了更好的講解構(gòu)造函數(shù)、原型、原型鏈等,我們需要復(fù)習(xí)一下函數(shù)的一些基礎(chǔ)知識。接下來,就讓我們一起回味一些JS的基礎(chǔ)知識點。
全局變量VS局部變量簡單粗暴的來說,全局/局部變量就是:
1)全局變量:函數(shù)外部聲明,或者不使用var關(guān)鍵字,在運行的任何地方都可以引用。
2)局部變量:函數(shù)內(nèi)部聲明,且實用var關(guān)鍵字,只能在函數(shù)內(nèi)部引用。
如:
1)var a = 10;//全局變量 2)function test(){ a = 10;//全局變量 } 3)function test(){ var a = 10;//局部變量 }
當(dāng)然,我們也可以實用bind()、call()、apply()等方法改變運行環(huán)境。
詳情可以查閱:
1)bind()
2)call()
3)apply()
函數(shù)的arguments是一個對象,非數(shù)組,而是一個類數(shù)組的對象,包含lenth屬性,適用于動態(tài)參數(shù)的場景,不建議濫用,因為它會影響你代碼的可讀性。
function add(a,b){ return arguments[0]+arguments[1];//相當(dāng)于return a+b; } add(1,2);//3this指針
如果this在全局作用于下,那么this指向window。如果this在對象的方法中,則指向該對象。
window.name = "wuhuiming"; var i = { name:"huimingwu" }; function sayName(){ console.log(this.name); } sayName();//wuhuiming i.sayName = sayName; i.sayName();//huimingwu函數(shù)的屬性
函數(shù)有三個屬性:name、length和prototype。其中,length又與arguments.length有一點點的區(qū)別,即:length與arguments.length:前一個為函數(shù)的length,在聲明時確定,后一個為arguments的length,根據(jù)調(diào)用時傳遞的值確定。
閉包在復(fù)習(xí)了函數(shù)的相關(guān)基礎(chǔ)知識之后,我們終于可以進入閉包。作為一個前端開發(fā)者,看見閉包,是否就立刻興奮了呢?閉包又是什么呢?接下來,讓我們走進閉包的世界。
在 JavaScript高級程序設(shè)計 一書中,閉包是這樣被描述的——“閉包是指有權(quán)訪問另一個函數(shù)作用域中的變量的函數(shù)”。我們可以這樣理解閉包,首先,閉包是一個函數(shù),是一個什么樣子的函數(shù)呢?是一個可以訪問另一個函數(shù)中變量的函數(shù)。
function test(){ var i = "Hello World"; function test2() { return i; } return test2; } var test = test(); test();//Hello World
以上就是一個閉包的簡單案例,test2是一個函數(shù),是一個什么樣的函數(shù)呢?它是一個可以訪問父函數(shù)test作用域中變量i的函數(shù),就這樣,一個簡單的閉包就產(chǎn)生了。
當(dāng)然,閉包的應(yīng)用還有很多很多很多,如Jquery的封裝方式就是采用了閉包,有興趣的小伙伴可以去圍觀圍觀Jquery的源碼。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/93189.html
摘要:前言這段時間一直在消化作用域鏈和閉包的相關(guān)知識。而作用域鏈則是這套規(guī)則這套規(guī)則的具體運行。是變量對象的縮寫那這樣放有什么好處呢我們知道作用域鏈保證了當(dāng)前執(zhí)行環(huán)境對符合訪問權(quán)限的變量和函數(shù)的有序訪問。 前言:這段時間一直在消化作用域鏈和閉包的相關(guān)知識。之前看《JS高程》和一些技術(shù)博客,對于這些概念的論述多多少少不太清楚或者不太完整,包括一些大神的技術(shù)文章。這也給我的學(xué)習(xí)上造成了一些困惑,...
摘要:也可以在中使用函數(shù)來執(zhí)行命令行程序。注意,這種方式并不能保護數(shù)據(jù)庫免受惡意用戶的攻擊,只能預(yù)防自己的手誤。必須使用語法才能將解釋為相應(yīng)的變量。上一篇文章指南基礎(chǔ)知識數(shù)據(jù)類型下一篇文章指南創(chuàng)建刪除文檔 上一篇文章:MongoDB指南---3、MongoDB基礎(chǔ)知識-數(shù)據(jù)類型下一篇文章:MongoDB指南---5、創(chuàng)建、刪除文檔 本節(jié)將介紹如何將shell作為命令行工具的一部分來使用,如...
摘要:也可以在中使用函數(shù)來執(zhí)行命令行程序。注意,這種方式并不能保護數(shù)據(jù)庫免受惡意用戶的攻擊,只能預(yù)防自己的手誤。必須使用語法才能將解釋為相應(yīng)的變量。上一篇文章指南基礎(chǔ)知識數(shù)據(jù)類型下一篇文章指南創(chuàng)建刪除文檔 上一篇文章:MongoDB指南---3、MongoDB基礎(chǔ)知識-數(shù)據(jù)類型下一篇文章:MongoDB指南---5、創(chuàng)建、刪除文檔 本節(jié)將介紹如何將shell作為命令行工具的一部分來使用,如...
摘要:我稱之為輕量級函數(shù)式編程。序眾所周知,我是一個函數(shù)式編程迷。函數(shù)式編程有很多種定義。本書是你開啟函數(shù)式編程旅途的絕佳起點。事實上,已經(jīng)有很多從頭到尾正確的方式介紹函數(shù)式編程的書了。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson - 《You-Dont-Know-JS》作者 譯者團隊(排名不分先后):阿希、blueken、brucecham、...
摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現(xiàn)在已經(jīng)一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...
閱讀 3178·2021-11-23 09:51
閱讀 689·2021-10-14 09:43
閱讀 3216·2021-09-06 15:00
閱讀 2412·2019-08-30 15:54
閱讀 2567·2019-08-30 13:58
閱讀 1857·2019-08-29 13:18
閱讀 1385·2019-08-27 10:58
閱讀 522·2019-08-27 10:53