首页 > 其他分享 >js基础---函数与闭包

js基础---函数与闭包

时间:2023-05-05 14:01:59浏览次数:39  
标签:闭包 调用 函数 作用域 创建 js --- 高阶

函数

函数的参数也可以是一个函数:此函数被称之为回调函数

高阶函数

如果一个函数的参数和返回值是函数,则称此函数为高阶函数

利用高阶函数的特性不改变原函数的情况下新增函数功能

闭包

闭包就是能访问外部函数作用域中变量的一个函数
当我们不希望别人访问一些局部变量时,就可以使用闭包
创建闭包的条件:1.需要嵌套函数 2.内部函数需要引用外部函数的变量 3.内部函数作为返回值返回出去

利用闭包原理打印函数被调用的次数

函数的作用域在函数创建时就已经创建。
所以并不是离谁近,谁的外层作用域就是谁。(和调用的位置无关)
如下第二个函数中的fn()打印的a应该为全局变量a

闭包的生命周期

1.闭包在外部函数调用时产生,每次调用都会产生一个新的闭包。
2.在内部函数丢失时销毁,(内部函数被垃圾回收了,闭包才会消失)
需要大量执行创建实例的操作时,不适合使用闭包因为闭包会产生空间的浪费(类可以使用原型,闭包不可以使用原型)

标签:闭包,调用,函数,作用域,创建,js,---,高阶
From: https://www.cnblogs.com/chenyanglearing/p/17373912.html

相关文章

  • 前端开发环境搭建--vue
    1、安装node.jshttp://nodejs.cn/download检查是否安装成功node-v使用如下语句解决npm速度慢的问题npminstall--registry=https://registry.npm.taobao.org2、安装vue-clinpminstallvue-cli-g检查是否安装成功:vuelist3、安装webpacknpminstallwebpack-g4、......
  • JS动态时间
    一、动态时间动态走动<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport"con......
  • 【2】Django项目-人力资源管理系统-设计表结构
    Django项目-人力资源管理系统-设计表结构一、在models.py中编写表结构创建两张表:部门表和用户信息表fromdjango.dbimportmodels#Createyourmodelshere.classDepartment(models.Model):'''部门表'''dp_name=models.CharField(max_length=32,verbo......
  • httprunner 4.x学习 - 3.variables 变量声明与引用
    前言在HttpRunner中,支持变量声明(variables)和引用($var或${var})的机制。在config和step中均可以通过variables关键字定义变量,然后在测试步骤中可以通过$变量名称的方式引用变量。区别在于在config中定义的变量为全局的,整个测试用例(testcase)的所有地方均可以引......
  • jsp Web超大文件上传和断点续传的实现
    ​ 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程并发上传能够达到最大效率。 本文是基于springboot+vue实现的文件上传,本文主要介绍服务端实现文件......
  • vue搭建脚手架出现:无法加载文件 D:\SoftWare\NodeJS\node_global\vue.ps1
    一、前言用VsCode搭建Vue3脚手架时,提示“无法加载文件D:\SoftWare\NodeJS\node_global\vue.ps1”文件 二、解决方法以管理员身份打开VSCode编辑器首先执行get-ExecutionPolicy查看执行策略然后执行set-ExecutionPolicyRemoteSigned把策略模式改为RemoteSigned更改执行......
  • 在 linux-4.9/drivers/usb/serial/ch341.c 上串口收发数据异常
    有天做USBhost串口驱动的时候发下FT\CP都没有问题,就CH341有问题,读写正常,但数据不正常。有一点稀奇,可能是ch中间有版本变更了吧。解法就更新到https://github.com/torvalds/linux/blob/master/drivers/usb/serial/ch341.c最新的代码就行,有一些函数有出入,但大体影响......
  • vue-print 实现打印功能
    一、安装1.Vue2npminstallvue-print-nb--saveimportPrintfrom'vue-print-nb'//GlobalinstructionVue.use(Print);//or//Localinstructionimportprintfrom'vue-print-nb'directives:{print}2.Vue3npminstallvue-pri......
  • Django项目-人力资源管理系统
    人力资源管理系统【HRMS】一、pycharm新建项目1.新建项目2.创建APP-website2.1  方法1:终端输入pythonmanage.pystartappwebsite2.2 方法2:利用Pycharm工具输入:快捷键 CTRL+ALT+R输入startappwebsite 2.3 创建完成 ......
  • threejs相机动画
    threejs相机动画import*asdatfrom"dat.gui";import{GUI}from"../../utils/lil-gui.module.min.js";importTWEENfrom"@tweenjs/tween.js";constgui=newGUI();gui.domElement.style.right="0px";......