javascript闭包经典面试题

javascript闭包经典面试题functionfun(n,o){  console.log(o)  return{    fun:function(m){      returnfun(m,n);    }  };}vara=fun(0); a.fun(1); a.fun(2); a.fun(3);var

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

Jetbrains全系列IDE稳定放心使用

function fun(n,o) {

   console.log(o)

   return {

     fun:function(m){

       return fun(m,n);

     }

   };

}

var a = fun(0);  a.fun(1);  a.fun(2);  a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1);  c.fun(2);  c.fun(3);

:三行输出分别是什么?

 

首先第一行,先看var a = fun(0),把0传入fun(n,o)中,那么n=0o=undifine

fun(n,o) return{
fun:function(m){returnfun(m,n);}};

所以a就等于{
fun:function(m){return fun(m,0);}};

所以a.fun(1)=function(1){return fun(1,0);}=fun(1,0),所以会输出0

同样a.fun(2)=function(2){return fun(2,0);}=fun(2,0),输出0,以此类推,a.fun(3)也输出0

所以最终输出的结果为:undifine0,0,0

再来看第二行,fun(0)输出undifinefun(0).fun(1)=a.fun(1)=fun(1,0)={fun:function(m){return fun(m,1);}};输出0

fun(0).fun(1).fun(2)=function(2){return fun(2,1);}=fun(2,1)={fun:function(m){return fun(m,2);}},输出1

以此类推,fun(0).fun(1).fun(2).fun(3),

最终按次序输出的是:undifine0,1,2

最后看第三行,var c = fun(0).fun(1),根据上面两行的推理,输出的是undifine0

c={fun:function(m){return fun(m,1);}},c.fun(2)=function(2){return fun(2,1);},输出1

c.fun(3)=function(3){return fun(3,1);},输出的还是1

所以第三行输出的是:undifine0, 1, 1

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

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

(0)
上一篇 2026年3月12日 上午9:36
下一篇 2026年3月12日 上午9:40


相关推荐

  • OpenClaw 数据库配置:从 SQLite 到 PostgreSQL

    OpenClaw 数据库配置:从 SQLite 到 PostgreSQL

    2026年3月13日
    2
  • 实对称矩阵_对称矩阵怎么快速求行列式

    实对称矩阵_对称矩阵怎么快速求行列式实对称矩阵有着很好的性质,如果用一句话概括,就是:n阶实对称矩阵必有n个两两正交的实特征向量。百度百科对实对称矩阵的性质描述如下:1.实对称矩阵A的不同特征值对应的特征向量是正交的。2.实对称

    2022年8月4日
    16
  • java数组详解

    java数组详解1 数组概念同一种类型数据的集合。其实数组就是一个容器。数组的好处可以自动给数组中的元素从0开始编号,方便操作这些元素。格式1:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];示例:int[] arr = new int[5];格式2:

    2022年6月2日
    29
  • Qt5.14.2下载与安装(保姆级图文教程)[通俗易懂]

    Qt5.14.2下载与安装(保姆级图文教程)[通俗易懂]本文详细介绍了Qt5.14.2的安装步骤,每一步都有详细说明,明确各个组件的含义,让安装组件不再纠结。教给你怎么获取、如何安装,如何卸载Qt等操作

    2022年5月16日
    61
  • spring注解解析流程_深入理解Kafka

    spring注解解析流程_深入理解Kafka前言众所周知,spring从2.5版本以后开始支持使用注解代替繁琐的xml配置,到了springboot更是全面拥抱了注解式配置。平时在使用的时候,点开一些常见的等注解,会发现往往在一

    2022年8月16日
    7
  • 注解与自定义注解

    注解与自定义注解1 注解注解很厉害 它可以增强我们的 java 代码 同时利用反射技术可以扩充实现很多功能 它们被广泛应用于三大框架底层 传统我们通过 xml 文本文件声明方式 如下图 但是 XML 比较繁琐且不易检查 而现在最主流的开发都是基于注解方式 代码量少 框架可以根据注解去自动生成很多代码 从而减少代码量 程序更易读 例如最火爆的 SpringBoot 就完全基于注解技术实现 注解设计非常精巧 初学时觉得很另类甚至多余 甚至垃圾 有了 java 代码干嘛还要有 注解呢 但熟练之后你会赞叹 它竟然可以超越 java 代码的功能

    2026年3月17日
    2

发表回复

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

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