JS内部函数一道自测题

题目如下

var add = function(){
	var sum = 1;//父函数的变量
	
	var tem = function(x){
		sum = sum + x;
		return tem;//子函数;实现sum值增加x
	}
	
	tmp.toString = function(){//tmp的toString函数;返回此时的sum值
		return sum;
	}
	
	return tem;//将子函数返回;方便外部调用
}

//求alert(add(1)(2)(3))的输出值

通过对内部函数概念的理解分析,我们可以得出如下结论

1. 内部函数受其父函数作用域限制不能够被直接调用

2. 要想调用内部函数,要么定义全局变量并且将内部函数赋值给全局变量,通过调用全局变量来调用内部函数;
    要么将内部函数直接返回给外部函数;

再来一步步解析这道题

1.add(1)可理解为:var innerFunction = add(1),由此我们获取到了内部函数对象并且执行父函数逻辑定义变量sum并赋值1;

2.那么innerFunction(2)的执行结果就不难解析了,即sum = 1+2;此时sum为3

3.以此类推,另外一个内部函数对象再执行下一步运算;此时sum =3+3;

4.alert调用tem的toString方法,输出运算最终结果6

 举一反三不难得出 alert(add(100)(2)(3))的输出值为6;alert(add(1)(3)(3))的输出值为7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值