闭包面试回答_ajax面试题

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


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);}

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@’localhost’「建议收藏」

    ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@’localhost’「建议收藏」注:原因为MySql8.0.11换了新的身份验证插件(caching_sha2_password),原来的身份验证插件为(mysql_native_password)。而客户端工具NavicatPremium12中找不到新的身份验证插件(caching_sha2_password),对此,我们将mysql用户使用的登录密码加密规则还原成mysql_native_passwor…

    2022年8月12日
  • Java学习之爬虫篇

    Java学习之爬虫篇0x00前言总结完基础阶段,来写个爬虫练练手,从中能学到不少。0x01爬虫结构与概念爬虫更官方点的名字叫数据采集,英文一般称作spider,就是通过编程来全自动的从互联

    2021年12月12日
  • ubuntu ipsec配置_ubuntu安装iperf3

    ubuntu ipsec配置_ubuntu安装iperf3ipsetpackageinUbuntuipset:administrationtoolforkernelIPsetsipset-dbgsym:debugsymbolsforipsetlibipset-dev:developmentfilesforIPsetslibipset13:libraryforIPsetslibipset13-dbgs…

    2022年10月7日
  • linux 日期转换时间戳_将时间戳转为时间

    linux 日期转换时间戳_将时间戳转为时间时间戳与日期的转换最近项目上需要用到时间戳,查找了资源终于找到了实现方式,最后时间戳还需要转换成具体的日志格式,查阅了一些资料,还是没有找到具体的实现方式,所以这里总结一些,防止其他小伙伴就掉坑,实现是在freeRTOS系统上的,当前我在linux下尝试实现以下。运行效果最近项目上需要用到时间戳,查找了资源终于找到了实现方式,最后时间戳还需要转换成具体的日志格式,查阅了一些资料,还是没有找到具体的实现方式,所以这里总结一些,防止其他小伙伴就掉坑,实现是在freeRTOS系统上的,当前我在linux下尝试实

    2022年9月27日
  • JSON字符串转为java对象

    JSON字符串转为java对象在日常的java开发中,我们经常会需要接收到其它地方传过来的数据,格式也很多都是通过JSON格式来传递的。所以我们经常需要将JSON格式的数据转换为我们所需要的数据格式,比如javabean形式。对于只有一层的JSON格式的数据转换还是比较简单的。代码如下:Stringparam="{‘leader’:’headtearch’}";JSONObjectjsonObject…

    2022年10月7日
  • java object toarray,Object[] toArray()

    java object toarray,Object[] toArray()Object[]toArray()描述(Description)java.util.LinkedList.toArray()方法以适当的顺序(从第一个元素到最后一个元素)返回包含此列表中所有元素的数组。此方法充当基于数组的API和基于集合的API之间的桥梁。声明(Declaration)以下是java.util.LinkedList.toArray()方法的声明publicObject[]…

    2022年5月14日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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