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ù)字,下劃線(xiàn)和美元$符號(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ù)外部的任何地方訪(fǎng)問(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í)將局部變量刪除。