JavaScript 函數(shù)參數(shù)
JavaScript 函數(shù)參數(shù)
JavaScript 函數(shù)允許沒有參數(shù)(但包含參數(shù)的小括號不能省略),也可以向函數(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ù)錯誤
JavaScript 函數(shù)參數(shù)并沒有嚴格要求哪些參數(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ù)調(diào)用的參數(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ù)輸入數(shù)據(jù)后產(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ù)會另外配置內(nèi)存保存參數(shù)值,所以并不會改變原變量的值。
傳址:將變量實際保存的內(nèi)存位置傳入函數(shù),所以如果在函數(shù)中變更參數(shù)的值,也會同時變動原參數(shù)的值。
數(shù)字、字符串和布爾----傳值
對象、數(shù)組和函數(shù)----傳址
字符串對象-------傳址
4. Js函數(shù)的參數(shù)數(shù)組
Js的函數(shù)都擁有一個參數(shù)數(shù)組(Arguments Array)對象,叫做arguments對象。當調(diào)用函數(shù)傳入?yún)?shù)時,函數(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];
??????? }
???? 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ù)外的程序代碼并無法訪問此變量。
全局變量(Global Variables)在函數(shù)外聲明的變量,整個JS程序的函數(shù)和程序代碼都能訪問此變量。