[JavaScript] Defining and Invoking Functions

function Definition

1、若直接 return; 则 caller 得到 undefined

2、若根本没有 return xxxx; 出现在 function 中,则 caller 得到undefined

3、如果传的 多了,则多出的ignore少了,则少的就是undefined

4、访问 function 自带的 arguments 时,要通过index,而不是name来访问

nested function

1、nested function 可以有名字,也可以没有名字

2、nested function statement 只能定义在 containing function 的最高层级(即,不能放在 if, while 等 statement 中)

3、nested function literals 可以出现在 containing function中的任何地方

//一个有名字 ( square ) 的 nested function
function hypotenuse(a, b) {
    function square(x) { return x*x; }// 这是一个nested function,而且其有名字,为 square
    return Math.sqrt(square(a) + square(b));
}

function literal

function literal 和 functionstatement的不同之处

1、function literal 是作为一个 expression 的(这是其最重要特征,有没有名字反而不重要)

2、function statement 是作为一个 statement 的

3、function literal 大部分情况下是没有名字,但是,也可以指定名字


举例说明如下: 

//一个有名字的 function literal
//注意:
//1、function literal最重要的特征是“其作为一个expression,而不是一个statement”
//2、有没有名字并不是其重要特征
//3、即使存在名字,这个名字也就只能在此 function literal 体内自己调用,其他方法都无法调用它
var f = function fact(x) { if (x <= 1)return 1; else return x*fact
(x-1); };

1、定义一个 unnamed function,并且将其存储在 variable f

2、function literal是通过JavaScript expression,而不是通过 statement,来创建的

3、f 中存储的是一个unnamed function,而不是名字为 fact() 的function

4、事实上,没有名字为 fact() 的 function,fact() 只能它在自己体内调用

5、fact 是一个 named function literal,这种 function literal 的特殊之处就在于,function body 可以调用它自己(注意:JavaScript 1.5前,此特性未能正确实现)

6、function literal 的优点:非常灵活,尤其适用于只使用一次从而不需要名字的场合

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值