Posted on 2007-05-04 22:20
ZelluX 阅读(314)
评论(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()使用了外部方法的参数。