函數的名稱
function fun() { alert(123);}fun(); //123f = function() { alert(123);}f(); //123msg = alert;msg(123); //123
函數的傳回值
function fun() { var num = 1; return num; //函數可以沒有 return; 如果有 之後的代碼不會被執行 num++; return num;}var r = fun();alert(r); //1
函數的既定參數和實際參數
/* 預定參數的個數 */function fun(a, b, c, d) { alert(fun.length); /* 預定參數個數 */ alert(arguments.callee.length); /* 也可以這樣, arguments.callee 標識當前函數 */}fun(11, 22); //4 / 4/* 實際參數的個數、遍曆參數 */function fun(a, b, c, d) { alert(arguments.length); //實際參數個數 for (var i=0; i
this 表示調用函數的對象
<div name='MyDiv' onclick="alert(this.name);">aaaaaa</div> //點擊會顯示: MyDiv
caller 表示調用該函數的函數
function fun1() { return arguments.callee.caller.arguments[0]; //或寫作: fun1.caller.arguments[0];}function fun2() { alert(fun1());}fun2(11, 22); //11
call、apply
function sum(a, b, c) { alert(a+b+c);}sum(1, 2, 3); //6sum.call(null, 1, 2, 3); //6sum.apply(null, [1, 2, 3]); //6//call 與 apply 都是調用函數的方式, 這裡 null 以外的是函數的參數; apply 需要把參數寫在數組裡; 其目的就是重設第一個參數.//call 與 apply 的第一個參數表示調用該函數的對象, null 表示無調用對象; 譬如:function msg(s) { alert(s + ' ' + this.toString());}var str = 'ABC';var num = 123;msg.call(str, 'Hi'); //Hi ABCmsg.call(num, 'Hi'); //Hi 123
使用 Function 類建立函數
var fun = new Function('alert(123)');fun(); //123var fun = new Function('a,b', 'return a+b');alert(fun(11, 22)); //33
一個關於閉包的小例子
function fun(x) { return function(y) {return x+y;}}var a,b,c;a = fun(1);b = fun(2);c = fun(3);alert(a(1)); //2alert(b(2)); //4alert(c(3)); //6
eval : 這是一個全域函數, 它執行字串中的 JS 代碼並返回結果
var str = '((1 + 2) * 3 - 1) / 4';alert(eval(str)); //2