JavaScript 函數(shù)參數(shù)
JavaScript 函數(shù)參數(shù)
JavaScript 函數(shù)允許沒(méi)有參數(shù)(但包含參數(shù)的小括號(hào)不能省略),也可以向函數(shù)傳遞參數(shù)供函數(shù)使用。
下面的例子中,就向 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ù)錯(cuò)誤
JavaScript 函數(shù)參數(shù)并沒(méi)有嚴(yán)格要求哪些參數(shù)是必選參數(shù),哪些參數(shù)是可選參數(shù),因此傳入的參數(shù)個(gè)數(shù)是允許不等于定義函數(shù)時(shí)參數(shù)的個(gè)數(shù)的。
如果在函數(shù)中使用了未定義的參數(shù),則會(huì)提示語(yǔ)法錯(cuò)誤(參數(shù)未定義),JavaScript 代碼不會(huì)正常運(yùn)行。
如果參數(shù)已經(jīng)定義,但未正確的傳入?yún)?shù)時(shí),相關(guān)參數(shù)值會(huì)以 undefined 替換,JavaScript 代碼仍正常運(yùn)行,如下例所示:
<!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 對(duì)象
在 JavaScript 函數(shù)中,有個(gè)特殊的 arguments 對(duì)象,它以類(lèi)似數(shù)組的形式保存了當(dāng)前函數(shù)調(diào)用的參數(shù)。因此,開(kāi)發(fā)者無(wú)需定義具體的參數(shù)名,就可以方便的訪(fǎng)問(wèn)函數(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 對(duì)象中,arguments[0] 表示第1個(gè)參數(shù),arguments[1] 表示第2個(gè)參數(shù),依次類(lèi)推。
提示:
通常在函數(shù)定義中,為便于代碼的可讀性,一般不會(huì)使用 arguments 對(duì)象。在處理不定數(shù)目的參數(shù),或者模擬函數(shù)重載時(shí),可方便的使用 arguments 對(duì)象來(lái)處理。
檢測(cè)參數(shù)個(gè)數(shù)
使用 arguments 對(duì)象,可以很方便的檢測(cè)函數(shù)的參數(shù)個(gè)數(shù)。arguments 的 length 屬性,即 arguments.length 就是參數(shù)的個(gè)數(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ù)可以將運(yùn)行的結(jié)果返回,函數(shù)可以視為一個(gè)黑盒子,使用參數(shù)輸入數(shù)據(jù)后產(chǎn)生所需的運(yù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ù)會(huì)另外配置內(nèi)存保存參數(shù)值,所以并不會(huì)改變?cè)兞康闹怠?/p>
傳址:將變量實(shí)際保存的內(nèi)存位置傳入函數(shù),所以如果在函數(shù)中變更參數(shù)的值,也會(huì)同時(shí)變動(dòng)原參數(shù)的值。
數(shù)字、字符串和布爾----傳值
對(duì)象、數(shù)組和函數(shù)----傳址
字符串對(duì)象-------傳址
4. Js函數(shù)的參數(shù)數(shù)組
Js的函數(shù)都擁有一個(gè)參數(shù)數(shù)組(Arguments Array)對(duì)象,叫做arguments對(duì)象。當(dāng)調(diào)用函數(shù)傳入?yún)?shù)時(shí),函數(shù)即使沒(méi)有指明參數(shù)名稱(chēng),也一樣可以使用參數(shù)數(shù)組的對(duì)象獲取參數(shù)的個(gè)數(shù)和個(gè)別的參數(shù)值。
function sumInteger(){
var total = 0;
for(var i=0; i<sumInteger.arguments.length;i++){
total += sumInteger.arguments[i];
}
return total;
}
//調(diào)用函數(shù)
inntotal = sumInteger(100,45,567,234);
document.write("函數(shù)sumInteger(100,45,567,234):"+inttotal+"<br>");
5. JS函數(shù)的變量范圍
JS函數(shù)有兩種變量:
局部變量(local Variables)在函數(shù)內(nèi)聲明的變量,變量只能在函數(shù)內(nèi)的程序行內(nèi)使用,函數(shù)外的程序代碼并無(wú)法訪(fǎng)問(wèn)此變量。
全局變量(Global Variables)在函數(shù)外聲明的變量,整個(gè)JS程序的函數(shù)和程序代碼都能訪(fǎng)問(wèn)此變量。