js 的匿名函數

var sum = function(x,y){alert(x+y);
};

像上面這種,function后面沒有函數名的函數就叫做匿名函數。以上是將匿名函數賦值給了sum變量。

還有一種寫法:

alert((function(x,y){return x+y;
})(2,3));
//結果為5

?當單獨運行一個匿名函數時會報錯,比如:

function() {console.log(123)
}

?

塊級作用域:

在匿名函數中的變量屬于塊級作用域,

(function(){var la="你好哦";})();
console.log(la);//報錯---la is not defined

?匿名函數的作用:

1、通過匿名函數可以實現閉包。閉包是可以訪問在函數作用域內定義的變量的函數。若要創建一個閉包,往往都需要用到匿名函數。
2、模擬塊級作用域,減少全局變量。執行完匿名函數,存儲在內存中相對應的變量會被銷毀,從而節省內存。再者,在大型多人開發的項目中,使用塊級作用域,會大大降低命名沖突的問題,從而避免產生災難性的后果。自此開發者再也不必擔心搞亂全局作用域了。
https://blog.csdn.net/conatic/article/details/61627183

?閉包:

我們有時候需要得到函數內的局部變量。但是正常情況下,這是辦不到的,只有通過在函數的內部,再定義一個函數,這就形成了閉包。

function f1(){//f1不可以訪問f2內部的局部變量var n=999;function f2(){//f2可以訪問f1內的局部變量alert(n); // 999
  }}

  函數f2就被包括在函數f1內部,這時f1內部的所有局部變量,對f2都是可見的。但是反過來就不行,f2內部的局部變量,對f1就是不可見的。這就是Javascript語言特有的"鏈式作用域"結構(chain scope),子對象會一級一級地向上尋找所有父對象的變量。所以,父對象的所有變量,對子對象都是可見的,反之則不成立。

?

既然f2可以讀取f1中的局部變量,那么只要把f2作為返回值,我們不就可以在f1外部讀取它的內部變量了嗎

function f1(){var n=999;function f2(){alert(n); }return f2;}var result=f1();result(); // 999

?

?

使用閉包需要注意的問題:

由于閉包會使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題,在IE中可能導致內存泄露。解決方法是,在退出函數之前,將不使用的局部變量全部刪除。

閉包會在父函數外部,改變父函數內部變量的值。所以,如果你把父函數當作對象(object)使用,把閉包當作它的公用方法(Public Method),把內部變量當作它的私有屬性(private value),這時一定要小心,不要隨便改變父函數內部變量的值。

?

http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

?

轉載于:https://www.cnblogs.com/150536FBB/p/11428798.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447885.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447885.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

科目三并不難 盤點科目三技巧

科目三難不難?相信很多學員都會有這個疑問,其實,找駕校網可以負責任的告訴你,只要掌握了科目三考試技巧,通過科目三的機會將會大大增加。下面就請看科目三技巧,幫你輕松通過駕校科目三考試。   科目三考試…

健康腎臟有“六怕”

補腎”一詞大家并不陌生,甚至有人呢拿它當成功課來做。但其實,保護腎臟是日常生活中的小習慣就可以做到的,盲目的補腎則可能會傷腎!今天我們就來看看,腎臟都有哪“六怕”。 腎臟一怕:只重補腎,忽視腎臟健…

【轉載】矩陣求導、幾種重要的矩陣及常用的矩陣求導公式

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。本文鏈接:https://blog.csdn.net/daaikuaichuan/article/details/80620518 一、矩陣求導 一般來講,我們約定x(x1,x2,...xN)…

AI 人工智能學習路線

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 相關視頻資料下載見:https://blog.csdn.net/qwxwaty/article/details/80800701 階段一、人工智能基礎 - 高等數…

mysql多條數據合并一條之后取出重復值

mysql多條數據合并一條用,逗號分隔 GROUP_CONCAT(equipment_type) as type mysql多條數據合并一條用,逗號分隔并且去除重復值 GROUP_CONCAT(distinct equipment_type) as type 這里的distinct必須放在開頭 轉載于:https://www.cnblogs.com/zjj1990/p/11452951.html

人生一世 什么真正的才是你的?

近日看了一篇文章:“人生一世、什么是你的?”讓人思緒起伏。是啊,人生一世、到底什么才是你的,臨近古稀、這個問題讓人深思回首: 初戀是你的嗎?那是你們什么都還不成熟,只是一時的感情沖動,有很多的不現…

一張圖看懂AI、機器學習、深度學習的關系

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 AI(人工智能)是未來,是科幻小說,是我們日常生活的一部分。所有論斷都是正確的&#xff0…

數據結構與算法緒論

基本概念和術語 數據數據是信息的載體,是描述客觀事物屬性的數,字符以及所有能輸入到計算機中并被計算機程序識別和處理的符號的集合。 數據元素數據元素是數據的基本單位,通常作為一個整體進行考慮和處理。一個數據元素可由若干個數據項組成…

學習不能速成

學習是一個過程,在幼兒階段,如果爸媽不求速成,讓孩子能愉快地經歷各種建立新知的方式,打好基礎、享受學習,孩子才能終身保有學習的熱情。 日子過得飛快,整個世代仿佛在不斷地急速轉變,凡事講求速…

Django權限系統auth模塊詳解

轉自:原文出處 auth模塊是Django提供的標準權限管理系統,可以提供用戶身份認證, 用戶組和權限管理。 auth可以和admin模塊配合使用, 快速建立網站的管理系統。 在INSTALLED_APPS中添加django.contrib.auth使用該APP, auth模塊默認啟用。 User User是auth…

化妝、護膚的步驟

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 雖然從不化妝,但也記錄一下,也許多年后我還是有時間和耐心去化一下呢 .... ---------------------------------…

2014年駕考科目三考試扣分標準(細則)

【導語】:2014年駕考科目三考試的扣分標準是什么?2014年駕考科目三考試的扣分點有哪些?2014年路考有哪些扣分標準?路考扣分項目盤點 一、考試時出現下列情形之一的,評判為不合格: 1、不按規定使用安全帶或…

Windows10 網絡圖標消失 連接不上網絡 的解決方法

【背景】電腦win10的,下載一個軟件重啟之后網絡圖標消失,并且無法聯網。 參照此解決方法: 原因: 【Windows Event Log】服務對應的注冊表出現問題,導致無法正常啟動,進而導致一些依賴于它的聯網服務無法正常…

VUE:解決 [Vue warn]: Error in render: “TypeError: item.slice is not a function“ (取部分數據)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 雙重循環中使用 slice方法,報錯: [Vue warn]: Error in render: "TypeError: item.slice is not a fun…

廣州電子路考視頻發布 2014廣州電子路考考點

【導語】:科目三電子考考點是什么?廣州電子路考有哪些考點/考試項目?廣州交警在其官方微博發布了長達9分鐘的科目三電子考視頻,詳解考試要點。一起來看看2014廣州電子路考考點/考試項目大全。 科目三電子考考點是什么?沒摸過考試車“蒙查查…

函數的重載

函數的重載(function overloading): C允許用同一個函數名定義多個函數,而這些函數的參數個數和參數類型可以不相同。 一個函數名重新賦予它新的含義,使得一個函數名可以多用。 重載函數的參數個數、參數類型或參數順序…

在 js 中怎樣獲得 checkbox 里選中的多個值?(jQuery)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 思路:利用name屬性值獲取checkbox對象,然后循環判斷checked屬性(true表示被選中,false表…

GFM與博客園markdown測試

博客園流程圖 st>start: Start e>end op>operation: My Operation cond>condition: Yes or No?st->op->cond cond(yes)->e cond(no)->op 轉載于:https://www.cnblogs.com/oneTOinf/p/11462716.html

路考步驟七步走 科目三考試一定沒問題!

路考步驟一:科目三考試時,在上車前,無論你在車輛的什么位置,請務必從車的右側繞過車頭走到駕駛室門前,先觀察車前道路上是否有障礙,再觀察車后方是否有來車,確保安全后,打開車門&…

VUE項目中 獲得多個復選框 checkbox 選中的值(jquery)+ 解決 Uncaught TypeError: Cannot read property ‘push‘ of undefine

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 表格生成后第一列是復選框,效果: 表格是直接循環展示的后臺返回數據,代碼寫法: 2. 得…