Posted on 2007-05-04 22:20
ZelluX 閱讀(320)
評論(0) 編輯 收藏 所屬分類:
Web
越來越發現JavaScript其實是一門很強大、很精深的語言,要好好學習下。
以下例子都摘自于Professional JavaScript for Web Developers
1. JavaScript中函數不能重載。
2. 每個函數有一個對應的arguments[]數組,包含所有的參數,且數量不需固定。

function howManyArgs()
{
alert(arguments.length);
}
3. 函數也是一個對象,使用Function類創建函數的方法是:
var function_name = new Function(argument1, argument2,..,argumentN, function_body);
這里所有的參數都必須是字符串。
var sayHi = new Function("sName", Message", "alert(\"Hello \" + sName + \", \" + sMessage + \”);”);
從這個角度看,不支持函數重載的原因也很簡單。
doAdd = new Function("iNum", "alert(iNum + 100)");
doAdd = new Function("iNum", "alert(iNum + 10)");
doAdd(10);
可以推出的幾個結論:
a) 第二次函數聲明使得doAdd指向了另一個對象,自然不可能實現重載。
b) 函數可以通過句柄很容易的復制。
c) 函數能作為參數傳遞給另一個函數。
d) func.toString()可以得到函數的具體內容。
4. 閉包 Closure
簡單的定義就是使用了函數體之外的引用。
var sMessage = “Hello World!”;

function sayHelloWorld()
{
alert(sMessage);
}
sayHelloWorld();
var iBaseNum = 10;

function addNumbers(iNum1, iNum2)
{

function doAddition()
{
return iNum1 + iNum2 + iBaseNum;
}
return doAddition();
}
例二中的內嵌方法doAddition()使用了外部方法的參數。