JavaScript 函數定義
定義函數
在JavaScript中,定義函數的方式如下:
##function abs(x) { if (x >= 0) { return x ;
} else { return -x;
}
}
var abs = function (x) { if (x >= 0) { return x;
} else { return -x;
}
};
函數是JavaScript 語言的核心之一,其基本語法如下:
function functionName(arg0, arg1, ...) { statements
}
函數名字後面是一對小括弧,arg0, arg1 表示函數的參數,參數之間以, 號分隔,參數個數可以為0-25 個(0即表示無參數)。在沒有參數時,() 括號不可省略,超過25個的參數,將被JavaScript忽略{} 是函數體,裡面是函數要實現的函數語句
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> function hello(name){ document.write((name + ",你好!")); } </script> </head> <body> <input type="button" onclick="hello('小明')" value="确定"/> </body> </html>
#函數表達式
var x = function (a, b) {return a * b};
#在函數表達式儲存在變數後,變數也可作為一個函數使用:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> var x = function (a, b) {return a * b}; document.getElementById("demo").innerHTML = x(6, 9); </script> </body> </html>
函數提升(Hoisting)
在先前的教學中我們已經了解了"hoisting(提升)"。
提升(Hoisting)是 JavaScript 預設將目前作用域提升到前面去的行為。
提升(Hoisting)應用在變數的宣告與函數的宣告。
因此,函數可以在宣告之前呼叫:
myFunction(5);
function myFunction(y) {
return y * y;
}
使用表達式定義函數時無法提升。
arguments
#JavaScript還有一個免費贈送的關鍵字arguments,它只在函數內部起作用,並且永遠指向當前函數的呼叫者傳入的所有參數。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> function foo(x) { alert(x); // 10 for (var i=0; i<arguments.length; i++) { alert(arguments[i]); // 10, 20, 30 } } foo(10, 20, 30); </script> </head> <body> </body> </html>
函數是物件
在 JavaScript 中使用 typeof 運算子判斷函數型別會傳回 "function" 。
但是JavaScript 函數描述為一個物件更準確。
JavaScript 函數有 屬性 和 方法。
arguments.length 屬性傳回函數呼叫過程接收到的參數個數:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> function myFunction(a, b) { return arguments.length; } document.getElementById("demo").innerHTML = myFunction(4,7,3); </script> </body> </html>