分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

关于js的闭包和匿名函数

发布时间:2023-09-06 02:34责任编辑:白小东关键词:js匿名函数闭包

关于js闭包。之前我一直以为是匿名函数,以为封闭式的创建即执行销毁就是闭包,其实这是匿名函数,不一样的。也没有闭包的使用经验。

后来去网上查了下才知道,闭包的意思是:函数内部还有函数,返回一个函数,内部函数可访问外部函数的变量。

一个最简单的案例:

a是外部函数,b是内部函数,b可以使用a的变量i,调用a函数返回b函数,执行c既是执行b。其实也就意味着在a函数的外部,读取到了a函数内部的变量值。

a中的变量i将一直在内存中,直至c变量删除。

删除变量:delete c;

{let a=function(){let i=1;let b=function(){console.log(i+1)}return b;}let c=a();c();//2}

obj.geta()输出2,this代表当前对象。而闭包(内部函数)中的this代表window,这里为什么不输出1呢?因为这个a是let声明赋值的,不会传给window。

return function是直接返回一个匿名函数

{let a=1;let obj={a:2,geta:function(){console.log(this.a)return function(){console.log(this.a)}}}let c=obj.geta();//2c();//undefined}

用这种方式就可以了,外部将this赋值给一个新变量,再给闭包用

{let a=1;let obj={a:2,geta:function(){let _this=this;//将this赋值给_this再给闭包console.log(this.a)return function(){console.log(_this.a)}}}let c=obj.geta();//2c();//2}

关于js的闭包和匿名函数

原文地址:https://www.cnblogs.com/wuhairui/p/10488244.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved