js中闭包函数的调用方法
function fn() {let num = 10 // 只能在函数里面使用,外面看不到---- 数据私有化console.log('外');return function g() {num++console.log(num);}}const res = fn()fn()//外res//外res()//11res()//12fn()()//11 外fn()()//11 外
闭包的作用: 可以让函数外面访问函数内部的变量
现有需求,通过外部访问闭包内层函数,让num每次访问后加一
方法:
1.声明一个变量res = fn(),此时res就为一个函数(可以理解闭包的外层函数)
2.访问内部函数g().我们直接可以使用 res + ()的写法 即 res()来直接访问内层函数g()(调用内层函数g())
原理:
这里的res()的写法,是表示通过给res赋值为fn()这个函数,让res可以直接看成是这个闭包函数的外层函数,想要每次直接访问内层函数,只需要给外层函数加括号,就能直接访问内层函数.
不同的思路:
首先声明这个思路并不能满足上面的需求.但是很接近,容易混淆
提问:我们既然把fn()的值 赋给了res,(res=fn())那是不是代表 res下面的用法可以完全被fn()代替呢?即下面的res()可以用 fn()()代替呢?
回答:不可以!
原因:两者表示的含义完全不同.
fn()()表示 每一次都会先调用外层函数fn()再调用内层函数g(),不管下面写多少次fn()(),num的值每次都会先调用一次外层函数fn()被重新赋值为10,再调用g() 为11,永远只能打印 '外' 和 11
res()这个代码表示它通过fn()这个外层函数,直接调用一次内层函数g(),跳过了每次都会重新调用外层函数fn(),再找内层函数g()的这个过程,所以不管res()写多少次,外层函数中的let num = 10只会声明一次,g()里面num的值会随着res()的使用次数不断累加
js中闭包函数的调用方法相关推荐
- python 定义函数方法,python中函数如何定义?python函数的调用方法介绍
本篇文章给大家带来的内容是关于python中函数如何定义?python函数的调用方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 函数的概念,函数是将具有独立功能的代码块 ...
- 【Python——类】 同一个类中一个函数里调用另一个函数的方法
[Python-类] 同一个类中一个函数里调用另一个函数的方法 class Solution:def a(self):self.b() # 注意这种写法:self.类名def b(self):prin ...
- python如何调用dll库中的函数_Python调用dll库接口-ctypes方法
背景 最近需要用python写个脚本程序(win10 环境),需要调用现成的dll库完成这项任务,对于一直在Linux平台上开发程序的本人来说,从没有过使用dll的经历(不得不说还是so大法好),遇到 ...
- java js中 function函数报错_浅析JS中对函数function的理解(基础篇)
正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...
- Js中匿名函数的理解
目录 1.js中匿名函数的N种写法 最常见的用法: 2.JavaScript 匿名函数及闭包 2.1 匿名函数 2.1.1 函数的定义 2.1.2 匿名函数的创建 2.2 闭包 2.3 举例 2.4 ...
- js中修改this的指向方法整理
JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,Ja ...
- JS OOP -02 深入认识JS中的函数
深入认识JS中的函数: 1.概述,认识函数对象 2.函数对象和其他内部对象的关系 3.将函数作为参数传递 4.传递给函数的隐含参数:arguments 5.函数的apply,call方法和length ...
- JS中的call()和apply()方法(转)
转自:http://uule.iteye.com/blog/1158829 JS中的call()和apply()方法 博客分类: JS 1.方法定义 call方法: 语法:call([thisObj ...
- js中call()方法和apply方法的使用
1. 方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
最新文章
- JS中字符串的相关操作
- C# 窗体实例化一次
- Create your own blockchain amp; cryptocurrency! - understand blockchains by creating one in python
- Hadoop中的问题–何时无法交付?
- JavaScript实现自适应宽度的瀑布流
- 降价200!华为部分手机已取消充电器和数据线,网友表示可以接受
- 离开APM的弹性云还是真弹性吗
- 4059. 统计某指定字符出现个数
- 均值聚类散点图怎么画_用Excel制作一个漂亮的分类散点图
- Maven3.5安装配置
- 软件选择,iDreamPiano、freepiano、EveryonePiano
- 后端学习 Java Web 上半部分(MySQL~RequestResponse)
- Android画一条虚线
- 用LSTM生成武侠人名
- 手机摄像头基础知识-1-缩写篇
- H5通过Universal Link(通用链接)唤起app
- MATLAB中图像标注工具——Image Labeler的使用方法
- 前端一班:HTML5当天学习总结-摘抄张果博客园
- 应用层Fiddler抓包工具
- I.MX6 FFmpeg 录制视频
热门文章
- Centos7 虚拟机联网配置
- 细胞图像自动分割与计数软件简介
- Android有文件读写权限,无法读写文件 open failed: EACCES (Permission denied) 获取设备唯一不变id 所有文件读写权限按钮无法打开
- 永远的颠覆者——奇虎360董事长周鸿祎专访
- 个人工具开发【卡片式记忆-面试题】v.1.0.0
- postgresql和mysql中的limit使用方法
- 数据挖掘中免费数据集下载网站
- MNIST——手写数字识别数据集
- CSS3如何实现投影正片叠底效果
- 耐候玻璃水泥的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告