首页 > 其他分享 >js闭包理解

js闭包理解

时间:2022-10-10 11:01:08浏览次数:50  
标签:闭包 f1 f2 js 理解 result var 属性

js闭包其实就是一句话 闭包变量就是函数对象的属性
例1

function f1(){

var n=999;

function f2(){
n++;
alert(n); 
}

return  f2;

}

var result=f1();

result();
result();

执行结果为 1000和1001,为什么呢?因为js中万物皆对象 f1在被调用时会创建一个函数对象A,n和f2是它的属性,而f2每次被调用时都是访问对象A的属性

例2

function f1(){

var n=999;

function f2(){
n++;
alert(n); 
}

return  f2;

}

var result=f1();

result();
var result=f1();
result();

执行结果是1000和1000,因为第一次f1被调用时创建了A对象,result获取的是A的f2属性,访问的是A对象的属性,而第二次f1被调用是创建的是B对象,result获取的是B的f2属性,访问的是B对象的属性。

标签:闭包,f1,f2,js,理解,result,var,属性
From: https://www.cnblogs.com/czlnb/p/16774830.html

相关文章

  • 判断某个js文件是否已存在
    isScriptAlready(src:string){    constfound=      performance        .getEntries()        .filter((......
  • 关于对JS-面向对象-的理解
    最近看了《你不知道的JS上卷》这本书,写下自己的一点感悟!类首先,关于类,这是一种设计模式。JS是一门真正面对对象的语言为什么这样说呢?像JAVA这种众所周知的面对对象的语......
  • jsp操作本地数据库
    @目录环境准备检查驱动下载驱动配置Tomcat配置idea开始上手测试连接主界面显示列出全部学生模块实现条件查询学生模块实现添加学生模块实现条件删除学生模块实现条件修改学......
  • Uncaught TypeError: Converting circular structure to JSON
     在使用JSON.stringify方法去转化成字符串,会报错TypeError:ConvertingcircularstructuretoJSON原因: 对象中有对自身的循环引用; 解决方法:下面的 json_str 就......
  • 时间戳转换成日期格式,格式日期转换成时间戳 js
    格式化时间戳1timestampToTime(timestamp){2constdt=newDate(timestamp*1000)3consty=dt.getFullYear()4......
  • js异步编程面试题你能答上来几道
    在上一节中我们了解了常见的es6语法的一些知识点。这一章节我们将会学习异步编程这一块内容,鉴于异步编程是js中至关重要的内容,所以我们将会用三个章节来学习异步编程涉及到......
  • JS模块化—CJS&AMD&CMD&ES6-前端面试知识点查漏补缺
    本文从以时间为轴从以下几个方面进行总结JS模块化。从无模块化=>IIFE=>CJS=>AMD=>CMD=>ES6=>webpack这几个阶段进行分析。历史幼年期:无模块化方式需要......
  • JS 中的垃圾回收方式
    1.什么是垃圾(1)没有被引用的对象或变量(2)无法访问到的对象(几个对象引用形成一个环,互相引用)可达性是指那些以某种方式可以访问到或可以用到的值,它们被保证存储在内存中。......
  • js 自定义倍速时钟
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content......
  • JS基本类型和引用类型的存储方式
    一、基本类型:number,string,boolean,null,undefined,放在栈,栈内存是自动分配内存的。①基本类型比较是值的比较。②基本类型是按值访问,可以直接得到变量值。储存类型:值类......