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 你能估算...