闭包,作用域链两个面试题

/*面试一*/
			
			//代码片段一   没有闭包
			var name ="the Window"
			var object ={
				name : "my object",
				getNameFunc: function(){
					return function(){
						return this.name;
					}
				}
			}
			alert(object.getNameFunc()()) //the Window   
			
			//代码片段二  有闭包
			var name2="the Window"
			var object2 ={
				name : "my object",
				getNameFunc: function(){
					var that = this
					return function(){
						return that.name
					}
				}
			}
			alert(object2.getNameFunc()()) //my object
			
			
	
		
			/*面试2*/
			function fun(n,o){
				
				console.log(o)
				return {
					fun: function(m){
						return fun(m,n)
					}
				}
			}
			
			var a=fun(0);   //打印undefined  //a={fun : function(m){return fun(m,n)}}   最外层参数n:0,o:undefined 
			a.fun(1)  //打印0  //执行对象中的方法 传入m=1 在自己函数作用域没有找到n 去外层找到n=0 调用fun(1,0) 
			a.fun(2) //打印0
			a.fun(3) //打印0
			var b=fun(0).fun(1).fun(2).fun(3) //打印undefined 0 1 2  //链式写法,调用完一个函数接着调用下一个(连着把外层参数改了)
			var c=fun(0).fun(1)   //打印undefined  0  //之后c=fun(m,n)   m=0 n=1
			c.fun(2) //打印1 
			c.fun(3)//打印1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值