美文网首页这事情急不得
JS中的闭包和作用域

JS中的闭包和作用域

作者: 这事情急不得 | 来源:发表于2019-04-13 09:34 被阅读10次

最近有小哥替他弟弟问我这么一个问题,问下面这段代码的输出是什么。

首先我就想,小哥你自己搞IT就算了,还让你弟弟搞IT,要是选个高大上的职业多好,我也是醉了。。。

言归正传,对于这个代码,这是一个典型的闭包结构。两次调用f1()实际上两次调用了f1的代码,生成了2个闭包,所以result1和result2里面的n不是share的。

对于nAdd(),注意到它并没有用var声明,所以这货其实是全局作用域的一个变量,但是因为JS找变量是看在哪里定义的而不是看在哪里调用,所以它也闭包了n。问题是每次调用f1(),nAdd的值就被重新定义成了一个新的函数。所以第二次调用f1()时会把第一次调用

f1()时的nAdd的值覆盖掉。因此实际上nAdd最后是闭包了result2的n,而不是result1的。

最后,看一下在调试器中的运行结果:

相关文章

  • js 闭包

    一、js 作用域 讲闭包首先就要理解 js 的作用域。再 ES5 中,js 有两种作用域,全局作用域和函数作用域(...

  • js函数中的this

    前两篇文章“执行环境和作用域”和“js中的闭包”,我对谈了执行环境、作用域、作用域链和闭包的理解。但当牵涉到对象中...

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

  • js闭包的理解

    什么是闭包 通俗的来讲,个人觉得闭包就是延长变量作用域的函数。众所周知js的作用域分为全局作用域和链式作用域。在函...

  • 作用域和闭包

    目录 概述 作用域编译过程词法作用域全局作用域函数作用域 闭包循环和闭包闭包的用途性能 总结 概述 作用域和闭包一...

  • JavaScript快速上手:关于闭包的知识分享

    JS中变量的作用域 在理解闭包之前,我们得弄清楚JS中变量的作用域原理,它分为全局作用域和局部作用域,它有一...

  • JavaScript快速上手:关于闭包的知识分享

    01 JS中变量的作用域 在理解闭包之前,我们得弄清楚JS中变量的作用域原理,它分为全局作用域和局部作用域,它有一...

  • JS闭包大结局(JS闭包系列3)

    在上一篇中再谈JS闭包(JS闭包系列2),我详细的介绍了JS中的变量作用域相关的概念,结合第一节关于JS闭包(JS...

  • Javascript 闭包

    如果要了解闭包,我们需要先了解闭包的由来,闭包的产生,源于JS的词法作用域 词法作用域 作用域是指一个 变量能够访...

  • JS基础知识:变量对象、作用域链和闭包

    JS基础知识:变量对象、作用域链和闭包 前言:这段时间一直在消化作用域链和闭包的相关知识。之前看《JS高程》和一些...

网友评论

    本文标题:JS中的闭包和作用域

    本文链接:https://www.haomeiwen.com/subject/fryiiqtx.html