首页 > 其他分享 >面试-JS基础知识-作用域和闭包、this

面试-JS基础知识-作用域和闭包、this

时间:2024-09-11 15:47:16浏览次数:1  
标签:闭包 const 函数 作用域 JS 参数 fn

  • 函数作为返回值
function create(){
  const a = 100
  return function (){
    console.log(a) //a在这里是自由变量,向上寻找
  }
}

const fn = create()
const a = 200
fn() //100
  • 函数作为参数
function print(fn){
  const a = 13
  fn()
}
const a = 100
function fn(){
  console.log(a)
}
print(fn) //100

闭包:自由变量的查找是在函数定义的地方向上级作用域查找,而不是在执行的地方!

  • this取什么值是在函数执行的时候确定的,不是函数定义的时候确定
  • 箭头函数的this永远取上级作用域的值。
  • 使用call(..)可以确保this指向函数本身

this实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用

总结


手写bind函数第一个绑定的是this
bind 的功能是:

  • 返回一个新函数。
  • 当调用新函数时,this 指向指定的对象。
  • 可以预置一些参数,调用新函数时这些参数自动传递给原函数。

注意:

  • this要传进去
  • 参数要传进去
  • 返回值要返回回来
    下面的arguments可获取一个函数的所有的参数,它不是数组需要将其转换为数组形式。
    apply第一个参数是this,第二个参数是数组

总结:
bind 函数的实现核心就是通过闭包保存 this 和参数信息,并在执行时将它们传递给原函数。如果你觉得代码有些复杂,建议先理解以下几个关键点:
this 是动态的,可以通过 apply 或 call 方法来改变函数执行时的 this 指向。
闭包可以用来保存 this 和参数,从而在返回的函数中继续使用这些值。
new 调用的特殊情况需要我们使用 instanceof 来判断,并相应处理。

标签:闭包,const,函数,作用域,JS,参数,fn
From: https://www.cnblogs.com/gardenOfCicy/p/18408181

相关文章

  • HTML静态网页作业(HTML+CSS+JS)——蜡笔小新动漫网页设计制作(5个页面)
    ......
  • jsp潮流服饰网店平台f91s7
    jsp潮流服饰网店平台f91s7本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能用户,商品分类,商品信息技术要求:   开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术......
  • jsp车辆保险系统的设计与实现5f475
    jsp车辆保险系统的设计与实现5f本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能用户,保险信息,保单信息,车辆信息,理赔申请,理赔结果,通知公告技术要求:   开发语言:JSP前端使用:HTML5,CSS,JSP动......
  • jsp潮鞋商城系统的设计与实现8192n
    jsp潮鞋商城系统的设计与实现本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能用户,商品分类,商品信息,品牌开题报告内容一、研究背景与意义随着互联网技术的飞速发展和电子商务的普及,网络购物已成......
  • 如何在 VPS 上使用 NVM(Node Version Manager)安装 Node.js
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。介绍如果你已经知道Node.js是什么,它是用来做什么的,以及为什么它很酷,那么可以直接跳到安装说明。如果你想更多地了解Node及其生态系统,请继续阅读。对于那些还没有听说......
  • 在Ubuntu 18.04上安装Node.js的方法
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。介绍Node.js是一个用于通用编程的JavaScript平台,允许用户快速构建网络应用程序。通过在前端和后端都使用JavaScript,Node.js使开发更加一致和集成。在本指南中,您将学......
  • 基于JavaWeb开发的java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版
    基于JavaWeb开发的javaeclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版......
  • wangeditor——cdn引入的形式创建一个简易版编辑器——js技能提升
    昨天同事那边有个需求,就是要实现聊天功能,需要用到一个富文本编辑器,参考如下:上面的这个效果图是博客园的评论输入框最终使用wangEditor编辑器实现的效果如下:只保留了个别的菜单:默认模式的wangEditor编辑器如下:下面直接上代码:解决步骤1:cdn引入head头部标签引入css<......
  • 与 D3.js 的对比:ECharts 在前端可视化中的优势与劣势
    在前端数据可视化的领域,ECharts和D3.js是两个非常流行且强大的工具。尽管它们都可以用来创建图表和数据可视化,但它们的设计理念、使用方式和适用场景有所不同。本文将对这两个库进行比较,帮助你理解ECharts在前端可视化中的优势与劣势。ECharts的优势易于上手ECharts......
  • mysql 8.0数据类型 json
    mysql8.0新增数据类型json。5.7通过blob等类型来保存json格式的数据,为什么还要专门增加这一数据格式的支持呢?  1.保证了JSON数据类型的强校验:JSON数据列会自动校验存入此列的内容是否符合JSON格式,    非正常格式则报错,而varchar类型和text等类型本身是不存在这......