JavaScript 函數(shù)參數(shù)
JavaScript 函數(shù)參數(shù)
JavaScript 函數(shù)允許沒有參數(shù)(但包含參數(shù)的小括號不能省略),也可以傳遞參數(shù)給函數(shù)使用給函數(shù)。
下面的範(fàn)例中,就向 hello() 函數(shù)傳遞了 name 和 age 參數(shù),參數(shù)值分別是 小明 和 18。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> <script type="text/javascript"> function hello(name,age){ document.write("我叫" + name + ",今年" + age + "歲!"); } </script> </head> <body> <input type="button" onclick="hello('小明',18)" value="確定" /> </body> </html>
JavaScript 函數(shù)參數(shù)錯誤
JavaScript 函數(shù)參數(shù)並沒有嚴(yán)格要求哪些參數(shù)是必選參數(shù),哪些參數(shù)是可選參數(shù),因此傳入的參數(shù)數(shù)量是允許不等於定義函數(shù)時參數(shù)的個數(shù)的。
如果函數(shù)中使用了未定義的參數(shù),則會提示語法錯誤(參數(shù)未定義),JavaScript 程式碼不會正常運作。
如果參數(shù)已經(jīng)定義,但未正確的傳入?yún)?shù)時,相關(guān)參數(shù)值會被undefined 替換,JavaScript 程式碼仍正常運行,如下例所示:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> <script type="text/javascript"> function hello(name,age){ document.write("我叫" + name + ",今年" + age + "歲!"); } </script> </head> <body> <input type="button" onclick="hello('小明')" value="確定" /> </body> </html>
#JavaScript arguments 物件
在JavaScript 函數(shù)中,有一個特殊的arguments 對象,它以類似陣列的形式保存了目前函數(shù)呼叫的參數(shù)。因此,開發(fā)者無需定義具體的參數(shù)名,就可以方便的存取函數(shù)參數(shù):
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> <script type="text/javascript"> function hello(){ document.write("我叫" + arguments[0] + ",今年" + arguments[1] + "歲!"); } </script> </head> <body> <input type="button" onclick="hello('小明',18)" value="確定" /> </body> </html>
在arguments 物件中,arguments[0] 表示第1個參數(shù),arguments[1] 表示第2個參數(shù),依次類推。
提示:
通常在函數(shù)定義中,為方便程式碼的可讀性,一般不會使用 arguments 物件。在處理不定數(shù)目的參數(shù),或模擬函數(shù)重載時,可方便的使用 arguments 物件來處理。
偵測參數(shù)個數(shù)
使用 arguments 對象,可以很方便的偵測函數(shù)的參數(shù)數(shù)目。 arguments 的length 屬性,即arguments.length 就是參數(shù)的個數(shù):
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> <script type="text/javascript"> function hello(){ document.write(arguments.length); } </script> </head> <body> <input type="button" onclick="hello('小明',18)" value="確定" /> </html>
1. Js函數(shù)可以傳入不同的參數(shù),如
function writeNString(strMsg){
document.write(strMsg + "<br>");
}
#2. Js函數(shù)傳回值,js函數(shù)可以將運行的結(jié)果傳回,函數(shù)可以視為一個黑盒子,使用參數(shù)輸入資料後產(chǎn)生所需的運行結(jié)果,如
function one2N(intnumber){
#var intTotal = 0;
for(var i=0;i< =intnumber;i++){
??? intTotal +=i;}
return intTotal;
#}
3. Js函數(shù)的傳值和傳址參數(shù)
傳值:只是將變數(shù)的值傳入函數(shù),函數(shù)會另外配置記憶體保存參數(shù)值,所以並不會改變原變數(shù)的值。
傳址:將變數(shù)實際儲存的記憶體位置傳入函數(shù),所以如果在函數(shù)中變更參數(shù)的值,也會同時變動原參數(shù)的值。
數(shù)字、字串和布林--傳值
物件、陣列與函數(shù)--傳址
##字串物件--- -傳址4. Js函數(shù)的參數(shù)數(shù)組Js的函數(shù)都擁有一個參數(shù)數(shù)組(Arguments Array)對象,叫做arguments對象。當(dāng)呼叫函數(shù)傳入?yún)?shù)時,函數(shù)即使沒有指明參數(shù)名稱,也一樣可以使用參數(shù)陣列的物件來取得參數(shù)的數(shù)量和個別的參數(shù)值。function sumInteger(){
?? var total = 0;
? for(var i=0; i<sumInteger.arguments.length;i++){
?????? total += sumInteger.arguments[i];o?
???.##???? return total;
#}
//呼叫函數(shù)
#inntotal = sumInteger(100,45,567,234);
document.write("函數(shù)sumInteger(100,45,567,234):"+inttotal+"<br>");
5. JS函數(shù)的變數(shù)範(fàn)圍JS函數(shù)有兩個變數(shù):
局部變數(shù)(local Variables)在函數(shù)內(nèi)宣告的變數(shù),變數(shù)只能在函數(shù)內(nèi)的程式行內(nèi)使用,函數(shù)外的程式碼並無法存取此變數(shù)。
全域變數(shù)(Global Variables)在函數(shù)外宣告的變量,整個JS程式的函數(shù)和程式碼都能存取此變數(shù)。