從零開始學前端 17 JS函式

2021-10-07 02:59:05 字數 2804 閱讀 4321

3. 引數

4. 函式返回值

函式就是一段需要重複使用的**,用關鍵字 function 包起來,方便重複呼叫和簡化**。

如果一段**需要我們在很多地方重複使用,或者說需要實現乙個特殊的功能,我們就可以利用函式來解決。後續我們只需要維護這個函式即可,不會影響其它地方的**。

函式是由關鍵字 function、函式名、引數,以及置於括號中的待執行**構成的。

基本語法:

function

functionname

(arg0, arg1,

... argn)

functionfn(

)

(

function()

)();

匿名函式就是沒有名字的函式,宣告後不需要特意呼叫就會直接執行,或者當滿足某一條件後,會自動執行。我們在下一章著重講解匿名函式。

var fn =

newfunction

(alert

("函式 fn 被呼叫");

)

通過關鍵字 new 宣告的函式我們將其統一稱為建構函式,我們在下下章來講解。

varfn=

function()

實質上也是乙個匿名函式,我們也可以給它賦予乙個名字:

varfn=

function

test()

2.1 普通函式呼叫

直接使用函式名稱加括號的呼叫表示式進行呼叫,如果不加括號的話,是乙個指向函式的指標,而不是要執行函式。

functionfn(

)fn()

;

2.2 作為物件屬性方法呼叫

在語法上與普通函式的呼叫規則一致,只不過需要先訪問到物件,在呼叫具體的方法。兩者最實質的區別在於關鍵字this的指向問題:普通函式呼叫指向的是 window ,在物件中指向的是物件本身。

關鍵字this可以理解為每次呼叫函式時都會產生的乙個物件,它總是指向當前呼叫它的物件。一些特殊情況我們後續慢慢來講,開始的時候就先記住:this總是指向當前呼叫函式的物件,不允許給它賦值

function

fn1(

)var obj =

}fn1()

;// window

obj.

fn2();

// obj

2.3 構造函式呼叫

我們在前面講過了陣列的宣告方法,當函式宣告或呼叫時擁有關鍵字 new ,它就構成了建構函式或構造函式呼叫。

構造函式呼叫建立了乙個全新的物件,它繼承了函式的 prototype 屬性,並且將 this 的指向改為了這個新的物件。也就是說如果使用new obj.fn2()呼叫上面的方法,this 的指向將不再是 obj ,而是其本身。

var arr =

newarray(1

,2,3

);

2.4 間接呼叫
functionfn(

)fn.()

fn.call()

eval

("fn()"

)

我們可以將變數寫在括號內傳入函式當中,這個變數就是這個函式的引數,例:

function

fn(x,y)fn(

1,2)

;

x 和 y 就是函式 fn 的引數,引數又分形參和實參兩種:

js 並不需要指定傳入引數的型別,也不會對引數的個數進行校驗。這就說明我們需要嚴格按照定義函式時規定的引數傳入變數,或者針對問題進行相應的處理:

當傳入的實參少於形參時:

function

fn(x,y)fn(

1,3)

;// 4;fn(

);// 2;

function

fn(x, y)

if(y)

alert

(x + y)

;}

function

fn(x, y)

catch

(error

)}

以上是幾種比較典型的處理方法,一般會貼合專案實際情況採用不同的方法進行處理。

當我們傳入的實參大於定義的形參時,可以使用arguments獲取函式的實參,arguments為陣列,當不確定實參的個數時,需要通過迴圈遍歷每乙個值:

functionfn(

)}fn(

1,2,

3);

function

addition

(a,b)

var num1 =

addition(1

,2);

// 3

var num2 =

addition(2

,4);

// 6

種一棵樹,最好的時間是十年前,其次是現在。人的一生,總的來說就是不斷學習的一生。

蠶吐絲,蜂釀蜜。人不學,不如物。與其糾結學不學,學了有沒有用,不如學了再說。

從零開始學前端

靜態黃頁 伺服器組裝動態網頁資料 後端為主的mvc 前後端分離 純前端mv 為主 中間層輸出 前端virtual dom mnv 前後臺同構 後端為主的mvc 後端人員根據前台寫的html頁 套 模板渲染資料 前端為主的mv mvcmvc 執行過程 1.view傳送指令到 controller 2....

從零開始學習web前端開發

之前半個月一直在學習深度學習,但是感覺自己的能力還沒到那個程度所以就想擱置一下,從程式設計師基礎的前端開發來學。廢話不多說直接開記 我所使用的前端開發軟體就是業內很流行的vscode,作為小白的我當然也是用的這個 具體的安裝教程,外掛程式教程網上都有詳細的介紹,在此處不多講 在vscode中輸入 就...

虛函式 從零開始 2

三,以一段 開始 include using namespacestd classa end 虛函式示例 2 intmain void a fun 定義乙個函式指標 a p newb fun a fun p fun fun a fun2 p fun deletep system pause 你能估算...