JavaScript中閉包含義指的是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
10年的建平網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷推廣的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整建平建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯從事“建平網站設計”,“建平網站推廣”以來,每個客戶項目都認真落實執行。
閉包是函數和聲明該函數的詞法環境的組合,當內部函數被保存到外部時,將會生成閉包而閉包會導致原有作用域鏈不釋放,造成內存泄露,但同時閉包也是非常有用的,因為它可以將某些數據與對該數據的操作進行關聯。
例:
function demo() { var name = '張三'; // name 是demo()創建的局部變量 function demo1() { //demo1()是demo()中的內部函數(閉包) console.log(name); // 使用父函數中聲明的變量 } demo1(); }demo();
運行結果
函數demo()中創建一個名為name的局部變量和一個名為demo1()的內部函數。 demo1()函數只能在demo()函數體內使用。 demo1沒有自己的局部變量。但是由于內部函數可以訪問外部函數的變量,所以demo1()可以訪問父函數demo()中聲明的變量名name。但是如果有同名變量 name 在demo1中被定義,則會使用 自己函數中定義的 name。該例子說明嵌套函數可以訪問在其外部作用域中聲明的變量。
如果上面的代碼改成這樣結果會如何?
function demo() { var name = '張三'; function demo1() { console.log(name); } return demo1; } var newDemo = demo(); newDemo();
運行結果
由運行結果可知兩段代碼結果一樣,內部函數demo1()在執行之前被外部函數返回形成閉包,在這種情況下,newDemo()是運行demo時所創建的函數demo1的一個引用,所以當調用newDemo()時,變量名name仍可以傳遞給console.log(name)。
示例
function num(x) { return function(y) { return x + y; };} var num1= num(2); var num2 = num(3); console.log(num1(2));// 4 console.log(num2(2));// 5
運行結果
定義一個函數num(x)用于接收一個參數x并返回一個新函數,這個新函數還接收一個參數y并返回x和y之和;同時又定義了兩個新的值num1,num2都為閉包且傳值分別為2,3.
感謝各位的閱讀!看完上述內容,你們對JavaScript中閉包含義指的是什么大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注創新互聯行業資訊頻道。
標題名稱:JavaScript中閉包含義指的是什么
標題路徑:http://vcdvsql.cn/article18/pcodgp.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、外貿建站、網站設計公司、響應式網站、網頁設計公司、手機網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯