JavaScript函數(shù)是旨在執(zhí)行動(dòng)作或特定任務(wù)的代碼塊。
函數(shù)是由程序員定義的可重用的自定義代碼,可以使您的程序更具模塊化和效率。
當(dāng)“某物”調(diào)用JavaScript函數(shù)時(shí),將執(zhí)行該函數(shù)。
函數(shù)定義(也稱(chēng)為函數(shù)聲明)使用 function 關(guān)鍵詞,函數(shù)的順序依次為:
函數(shù)名稱(chēng)
函數(shù)的參數(shù)列表,用小括號(hào)( )括起來(lái),并用逗號(hào)分隔
定義函數(shù)的語(yǔ)句,用大括號(hào)括{ }起來(lái).
以下是JavaScript中函數(shù)的語(yǔ)法:
function nameOfFunction(parameter1, parameter2, ..., parameterN) {
// 要執(zhí)行的代碼
}函數(shù)名稱(chēng)可以包含字母,數(shù)字,下劃線和美元$符號(hào)(與變量相同的規(guī)則)。
在第一個(gè)示例中,我們將進(jìn)行函數(shù)聲明以向文檔打印問(wèn)候語(yǔ)。
function greet() {
document.write("Hello, World!");
}測(cè)試看看?/?定義函數(shù)不會(huì)執(zhí)行。定義函數(shù)只是對(duì)函數(shù)命名,并指定調(diào)用函數(shù)時(shí)的操作。
您可以通過(guò)在函數(shù)名稱(chēng)后加上括號(hào)()來(lái)調(diào)用函數(shù)。
//定義greet()函數(shù)
function greet() {
document.write("Hello, World!");
}
//調(diào)用已經(jīng)定義的greet()函數(shù)
greet();測(cè)試看看?/?現(xiàn)在,我們將greet()代碼包含在一個(gè)函數(shù)中,并且可以根據(jù)需要重復(fù)使用它。
// 定義greet()函數(shù)
function greet() {
document.write("Hello, World!");
}
// 多次調(diào)用已經(jīng)定義的greet()函數(shù)
greet();
greet();
greet();測(cè)試看看?/?您還可以使用其他方法來(lái)調(diào)用函數(shù):
事件發(fā)生時(shí)(用戶(hù)單擊按鈕時(shí))
從JavaScript代碼中調(diào)用它
自動(dòng)(自行執(zhí)行)
在本教程的后面,您將學(xué)到更多有關(guān)函數(shù)調(diào)用的信息。
在定義函數(shù)以在運(yùn)行時(shí)接受輸入值時(shí),可以指定參數(shù)。
函數(shù)參數(shù)在函數(shù)定義的括號(hào)()中列出。
//定義函數(shù)
function greet(name) {
document.write("Hello, " + name);
}
//以“ Vishal”為參數(shù)調(diào)用greet函數(shù)
greet("Vishal");測(cè)試看看?/?您可以根據(jù)需要定義任意數(shù)量的參數(shù)。
//定義函數(shù)
function add(num1, num2, num3) {
var total = num1 + num2 + num3;
document.write(total);
}
// 調(diào)用函數(shù)
add(5, 20, 10); // 0utputs: 35
add(-5, 8, 7); // 0utputs: 10測(cè)試看看?/?但是,對(duì)于您指定的每個(gè)參數(shù),在調(diào)用函數(shù)時(shí)都需要將相應(yīng)的參數(shù)傳遞給該函數(shù),否則其值將變得不確定。
//定義函數(shù)
function showFullname(fName, lName) {
document.write(fName + " " + lName);
}
// 調(diào)用函數(shù)
showFullname("Kavy", "Mark"); // 0utputs: Kavy Mark
showFullname("John"); // 0utputs: John undefined測(cè)試看看?/?參數(shù)的工作方式類(lèi)似于函數(shù)中的占位符變量;它們?cè)谶\(yùn)行時(shí)被調(diào)用時(shí)提供給函數(shù)的值(稱(chēng)為參數(shù))替換。
在函數(shù)內(nèi)部,參數(shù)表現(xiàn)為局部變量。
您將在本教程的后面部分了解有關(guān)函數(shù)參數(shù)的更多信息。
JavaScript函數(shù)可以使用return語(yǔ)句將值返回給調(diào)用該函數(shù)的腳本。
返回的值可以是任何類(lèi)型,包括數(shù)組和對(duì)象。
當(dāng)JavaScript到達(dá)一條return語(yǔ)句時(shí),該函數(shù)將停止執(zhí)行。
以下函數(shù)采用一個(gè)稱(chēng)為數(shù)字的參數(shù),并返回乘以自身的參數(shù)(即數(shù)字):
//定義函數(shù)
function square(number) {
return number * number;
}
//調(diào)用函數(shù),返回值將存儲(chǔ)在x中
var x = square(5);測(cè)試看看?/?一個(gè)函數(shù)不能返回多個(gè)值。但是,您可以通過(guò)返回值數(shù)組來(lái)獲得類(lèi)似的結(jié)果:
function makeArray() {
var myArray = ["Apple", "Mango", "Banana", "Orange"];
return myArray;
}測(cè)試看看?/?使用上面的示例,引用函數(shù)square對(duì)象,并引用函數(shù)square()結(jié)果。
如果不使用(),將返回函數(shù)定義而不是函數(shù)結(jié)果:
function square(number) {
return number * number;
}
document.write(square(5)); // 輸出 25
document.write(square); // 輸出定義的函數(shù)測(cè)試看看?/?雖然上面的函數(shù)聲明在語(yǔ)法上是一個(gè)語(yǔ)句,但是也可以通過(guò)函數(shù)表達(dá)式創(chuàng)建函數(shù)。
函數(shù)表達(dá)式可以存儲(chǔ)在變量中,并始終使用變量名來(lái)調(diào)用。
這樣的函數(shù)可以是匿名的 ; 它不必具有名稱(chēng)。例如,函數(shù)square()可以定義為:
var square = function(number) { return number * number; };
var x = square(5); // x = 25測(cè)試看看?/?另一個(gè)示例:
var sum = function(a, b) {
return a + b;
};
var x = sum(100, 8); // x = 108測(cè)試看看?/?上面的函數(shù)以分號(hào)結(jié)尾,因?yàn)樗强蓤?zhí)行語(yǔ)句的一部分。
定義在函數(shù)內(nèi)部的變量不能從函數(shù)外部的任何地方訪問(wèn),它們將成為函數(shù)的局部變量。
// 此處的代碼不能使用 city
function myFunc() {
var city = "New Delhi";
// 此處的代碼能使用 city
}
// 此處的代碼不能使用 city測(cè)試看看?/?由于局部變量只能在其函數(shù)內(nèi)部使用,因此具有相同名稱(chēng)的變量可以在不同的函數(shù)內(nèi)部使用。
函數(shù)啟動(dòng)時(shí)創(chuàng)建局部變量,函數(shù)完成時(shí)將局部變量刪除。