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