javascript中的函數分析
在腳本語言JavaScript中,函數的定義是由事件驅動或者當它被調用時可重複使用的代碼塊。在JavaScript的標準ECMAscript中,把函數表述為可以隨時隨地運行的語句。
(一)首先是函數的定義:
在ECMAscript函數的定義是 關鍵字function 函數名( 參數){主體;return(返回值)};這四部分組成的,但是在腳本語言中函數的定義卻分為三種方式定義:
形式1:function 函數名(參數){主體;返回值};這種定義的方式和ECMAscript的方式一樣;
形式2:var 函數名=function (參數){主體;返回值};
形式3:var 函數名=new Function (參數){主體;返回值};
在Javascript中只有這三種定義函數的方式,接下來説説每一種定義方式的使用的注意事項和具體的用法:第一種定義方式是最簡單,最容易理解的,他就是簡簡單單的'為我們定義一個函數,供我們在接下來的編程中使用;第二中方式是通過我們構造一個匿名函數,並且把這個匿名函數的傳遞給一個我們定義的函數變量來實現的,他在閉包中是很常見的,為的是使在全局域內,我們能使用內層函數,讓我們的函數形成閉包結構。第三種方式是通過new出一個新的內存空間存放我們的匿名函數,並賦值與我們定義的函數名,這個函數是基於我們的匿名函數創建的。這種方式主要應用在原型裏面。
其實通過觀察,我們會發現,好像這三種定義方式之間聯繫很緊密,感覺第三種第一方式好像是前面2種和第三種的組合使用,實事也是你看到的這樣,所以對於這3種定義方式我們知道就行了,知道他們分別什麼時候使用就好了。再有,我要説的是這三種定義方式的數據類型,是基於基本類型來説的,和基於對象類型的數據是一樣的,在基於對象數據類型裏,我們把函數稱為對象。當你接觸了對象的定義時,很明顯的發現,他們的定義方式基本上是一樣的。只不過函數名給稱為對象,定義的形式是很類似的。記住一點,對象就是函數,函數就是對象。
(二)幾種特殊的函數:
(1) 匿名函數
所謂的匿名函數,就是沒有函數名的函數。這種函數的有點就是説,它的調用很難,這也就保證了安全性。那麼我們應該如何調用匿名函數呢?來看個例子:
通過把匿名函數作為參數傳遞給add變量,我們就可以調用我們的匿名函數了。
(2)自調函數
自調函數也是匿名函數的一種,它沒有作為參數傳遞給其他變量,也沒有自己的函數名,也就是説它不能被別人調用,只能自己調用自己。
圖中寫的方式就是自調函數的使用,這個函數被兩個小括號包圍着,第一個小括號的作用是封裝,把我們編寫的匿名函數封裝在其中,第二個小括號就是調用了,我們還可以給他初始化,就像第二個自調函數的寫法一樣。
其實自調函數主要用於實現一次性的功能,就是説在執行週期內只運行一次,所以在我們進行網頁的初始化時,可以考慮使用自調函數。
(3)回調函數
回調函數,就是把自身作為返回值或者實參傳遞的這樣的函數。
函數a()和b()就是回調函數的應用。
(4)內部函數
這個就是一句話了,就是存在於函數內部的一類函數。
(三)函數的優點:
1.大量重複的語句寫在函數裏面,可以重複的調用;
2.簡化編程語言,讓編程變得模塊化;
3.優化代碼結構;
(四)注意事項:
1.函數的書寫時,可以先調用,在書寫;因為JavaScript在程序開始時,會對我們所有的函數和變量進行隱式的聲明;
2.函數不會自己執行,只有在發生函數調用時,才會分配空間,才能使用;
3.函數名相同時,默認執行寫在下面的函數;
4.函數名若有一個單詞構成,則首字母小寫,若有多個單詞構成,第一個單詞後其他單詞首字母大寫;
(五)函數的變量域:
1.全局變量
寫在全局域的變量稱為全局變量;
2.局部變量
定義在函數內部,並用var 聲明的變量稱為局部變量;如果定義在函數內部,但未用var 聲明,則看做是全局變量。
我們要清楚的知道,學習JavaScript語言就是學習各種各樣的函數,所以對於函數的理解一定深刻一些,不然在以後的學習過程中,我們會遇到各種函數的嵌套啊,什麼的各種函數糅雜在一起,就會更加的理不清頭緒。
-
JavaScript數據結構與算法中集合的實現
集合(Set)説起集合,就想起剛進高中時,數學第一課講的就是集合。因此在學習集合這種數據結構時,倍感親切。集合的基本性質有一條:集合中元素是不重複的。因為這種性質,所以我們選用了對象來作為集合的容器,而非數組。雖然數組也能做到所有不重複,但終究過於繁瑣,不如集...
-
網頁設計很糟糕的10個原因
個好的網頁設計,不僅吸引眼球,也是實用的、直觀的、層級簡單卻足夠複雜到保持用户的興趣。但是不好的網頁設計是由很多原因造成的,下面是關於網頁設計很糟糕的10個原因,歡迎閲讀了解!沒有足夠的空白空白可以説是設計中最重要的一部分。它有助於防止用户在瀏覽網站時...
-
PHP開發工程師的具體職責14篇
PHP開發工程師的具體職責1職責:1、對公司新的網站項目、系統項目、小程序項目進行開發;2、維護支持公司現有的網絡和系統平台工作運行;3、按時、獨立、高質量地完成工作,確保相關代碼邏輯的正確性及健壯性;4、開發、維護、升級和優化系統,並能快速定位並及時修復...
-
淺析JavaScript基本類型與引用類型
兩種類型:ECMAScript變量包含兩種不同類型的值:基本類型值、引用類型值;基本類型值:指的是保存在棧內存中的簡單數據段;引用類型值:指的是那些保存在堆內存中的`對象,意思是,變量中保存的實際上只是一個指針,這個指針指向內存中的另一個位置,由該位置保存對象;兩種訪問方...