Snowdream

I'm awake but my world is half asleep
posts - 403, comments - 310, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

JavaScript 学习 - Functions

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

只有注册用户登录后才能发表评论。


网站导航: