網頁設計

當前位置 /首頁/設計製作/網頁設計/列表

javascript中的函式分析

在指令碼語言JavaScript中,函式的定義是由事件驅動或者當它被呼叫時可重複使用的程式碼塊。在JavaScript的標準ECMAscript中,把函式表述為可以隨時隨地執行的語句。

javascript中的函式分析

(一)首先是函式的定義:

在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語言就是學習各種各樣的函式,所以對於函式的理解一定深刻一些,不然在以後的學習過程中,我們會遇到各種函式的巢狀啊,什麼的各種函式糅雜在一起,就會更加的理不清頭緒。

TAG標籤:JavaScript 函式 #