闭包面试回答_ajax面试题

闭包面试回答_ajax面试题写在前面:在学习了闭包之后,试着做做这些题。其实是一种很棒地检验自己学习成果的手段。我当时反反复复,学了但好像又没完全学,遇到题还是一头雾水,到现在可以捋得很清楚也经历了蛮久的。而且从this,执行上下文,作用域一直走过来,这些题目涉及的内容也相对全面,加油喽。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

??:写在前面:在学习了闭包之后,试着做做这些题。其实是一种很棒地检验自己学习成果的手段。我当时反反复复,学了但好像又没完全学,遇到题还是一头雾水,到现在可以捋得很清楚也经历了蛮久的。而且从this,执行上下文,作用域一直走过来,这些题目涉及的内容也相对全面,加油喽。?? 

​​​​​​​?【JS基础整理—No.06】闭包_Chailo的博客-CSDN博客

//? 闭包面试题1
function show(){
	f = function fn(){
		console.log(x);
	}
	var x=20;
	f();
}
show();	//20

//? 闭包面试题2
var name='window'
var object={
    name:'object',
    getName:function(){
        return function(){
            return this.name
        }
    }
}
console.log(object.getName()());	//window
// fn1=object.getName();	即fn1=getName()的返回值
// fn1=function(){return this.name}
// 输出 fn1()				相当于 函数自调用

//? 闭包面试题3
var name='window'
var object={
    name:'object'
    getName:function(){
        var that=this				//关键点
        return function(){
            return that.name
        }
    }
}
console.log(object.getName(()));	//object

//? 闭包面试题4
functiom fun(){
    return console.log(1);		//console.log(1)也是一个函数
}
console.log(fun());				//1 undefined

最后这俩题当时绕了我好一阵

//? 闭包面试题终极一
function fun(n ,o){
    console.log(o)
    return{
        fun:function(m){
        	return fun(m,n)
    	}
    }
}
var a= fun(0)	//打印o Undefined 给a返回一个对象 里面有闭包{n:0}
a.fun(1)		//打印o 0  调用a的属性fun m=1,去上层作用域找到 n=0 fun(1,0) 打印o 0 
a.fun(2)		//打印o 0  调用a的属性fun m=2,去上层作用域找到 n=0 fun(2,0) 打印o 0
a.fun(3)		//打印o 0  调用a的属性fun m=3,去上层作用域找到 n=0 fun(3,0) 打印o 0
//Undefined 0 0 0
//----------
var b=fun(0).fun(1).fun(2).fun(3)	//	Undefined 0 1 2
//打印o 0  调用a的属性fun m=1,去上层作用域找到 n=0 fun(1,0) 打印o 0 此时 n=m=1
//fun(0).fun(1). fun(2) n=1 fun(2,1) 打印o 1
//...
//----------
var c=fun(0).fun(1)		//Undefined 0
c.fun(2)		//1
c.fun(3)		//1 
//? 闭包面试题终极
function Foo(){
    getName=function(){alert(1);}
    return this
}
Foo.getName=function(){alert(2);}
Foo.prototype.getName=function(){alert(3);}
var getName=function(){alert(4);}
function getName(){alert(5);}
//请写出输出结果
Foo.getName();		//2
getName();			//4		出现同名的变量和函数,预解析完getName指向函数;代码执行过程中给变量赋值
Foo().getName();	//1		
//对象.getName() Foo()自调用,返回对象this,this-->window 即window.getName();但是函数调用会把全局的getName()覆盖掉 
getName();			//1		全局getName被覆盖
new Foo.getName();	//2		new关键字的作用:执行函数;找最近的()
new Foo().getName();//3		var f=new Foo(); f.getName(); Foo的实例f,f现在自身找,找不到去原型找。
new new Foo().getName();//3	var f=new Foo(); new f.getName(); new function(){alert(3);}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179739.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号