位置: 编程技术 - 正文

javascript中的作用域和闭包详解(javascript 作用)

编辑:rootadmin

推荐整理分享javascript中的作用域和闭包详解(javascript 作用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript概述及作用,javascript的主要用途,javascript主要功能,javascript 作用,javascript中的作用域预解析与声明变量提升,javascript 作用,javascript概述及作用,javascript中的作用域预解析与声明变量提升,内容如对您有帮助,希望把文章链接给更多的朋友!

一、JavaScript作用域

javascript中的作用域和闭包详解(javascript 作用)

JavaScript变量实际上只有两种作用域,全局变量和函数的内部变量。在函数内部任何一个地方定义的变量(var scope)其作用域都是整个函数体。全局变量:指的是window对象下的对象属性。作用域划分:基于上下文,以函数进行划分的,而不是由块划分的。强调两点:1. 在同一作用域中,JavaScript是允许变量的重复定义,并且后一个定义将覆盖前一个定义。2. 函数内部如果不加关键字var而定义的变量,默认为全局变量。

在变量解析过程中首先查找局部的作用域,然后查找上层作用域。在第一段代码的函数当中没有定义变量scope,于是查找上层作用域(全局作用域),进而进行输出其值。但是在第二段代码的函数内定义了变量scope(无论是在console之后还是之前定义变量,都认为在此作用域拥有变量scope),于是不再向上层的作用域进行查找,直接输出scope。但是不幸的是此时的局部变量i并没有赋值,所以输出的是undefined。

由于函数作用域的特性,局部变量在整个函数体始终是由定义的,我们可以将变量声明”提前“到函数体顶部。

当使用var声明一个变量时,创建的这个属性是不可配置的,也就是说无法通过delete运算符删除。二、作用域实例

当注册事件结束后,i的值为4,当点击按钮时,事件函数即function(){ alert("Button"+i);}这个匿名函数中没有i,根据作用域链,所以到buttonInit函数中找,此时i的值为4,所以弹出”button4“。三、javaScript闭包在js中,闭包主要涉及到js的几个其他的特性:作用域链,垃圾(内存)回收机制,函数嵌套,等等。1. 作用域链:简单来说,作用域链就是函数在定义的时候创建的,用于寻找使用到的变量的值的一个索引,而他内部的规则是,把函数自身的本地变量放在最前面,把自身的父级函数中的变量放在其次,把再高一级函数中的变量放在更后面,以此类推直至全局对象为止。当函数中需要查询一个变量的值的时候,js解释器会去作用域链去查找,从最前面的本地变量中先找,如果没有找到对应的变量,则到下一级的链上找,一旦找到了变量,则不再继续。如果找到最后也没找到需要的变量,则解释器返回undefined。2. Javascript的垃圾回收机制:在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么函数a执行后不会被回收的原因。构建一个闭包,这些变量将不会被内存回收器所回收,只有当内部的函数不被调用以后,才会销毁这个闭包,而没有任何一个闭包引用的变量才会被下一次内存回收启动时所回收。3. 有了闭包,嵌套的函数结构才可以运作四、利用js闭包实现循环绑定事件

标签: javascript 作用

本文链接地址:https://www.jiuchutong.com/biancheng/383796.html 转载请保留说明!

上一篇:Easyui form combobox省市区三级联动

下一篇:js和jquery实现监听键盘事件示例代码(js和jquery混合使用)

  • 税金及附加二级明细
  • 降低个人税负什么意思
  • 购买土地的契税怎么计算
  • 企业纳税过程
  • 注册资本认缴到哪里
  • 留存收益的个别资本成本率计算公式
  • 人力资源公司开办条件
  • 住宿费取得增值税专用发票,抵扣进项税额如何计算
  • 金蝶专业版二级科目设置
  • 权益法核算的好处
  • 商贸公司收到的邮票怎么做账
  • 购买自用应税车辆的应自购买之日起
  • 一次性筷子的消费税
  • 资本公积什么时候做账
  • 购买成品入库并结转成本会计分录怎么写?
  • 自用房产税如何计算
  • 加油费充值卡发票可以报销吗
  • 实施计划成本存货发生毁损的会计处理怎么做?
  • 长期借款产生的利息计入哪个科目
  • 重新刻发票章需要什么资料
  • 成本票和专票区别
  • 电子版A4黑白发票可以抵税吗?
  • 车辆租赁的增值税率
  • 代扣代缴的社保需要计提吗
  • 未开票收入如何确认
  • 股份有限公司发行的股票溢价
  • 个人所得税由公司承担的账务处理
  • 广告公司进项税有哪些
  • Win10 LTSC 2021(长期服务频道)正式版发布: 附MSDN官方ISO纯净镜像下载
  • 股东分红怎么处理
  • 税控盘进项税已抵扣如何转出分录
  • 办公费用减少的原因
  • 原始凭证填的基数怎么填
  • 计提下个月工资怎么做
  • 其他应收款超过一年是12个月吗?
  • 埃托沙国家公园发展观兽旅游的优势条件
  • 公司向个人支付劳务费
  • 累计盈余科目怎么填
  • 大堡礁的现状
  • 销售产品的运输费属于什么会计科目
  • 图片转base64格式返回给前端,前端如何展示?
  • javascript零基础
  • js获取当前日期的函数
  • php取值
  • vue3定义全局变量
  • expdp/impdp oracle数据泵导入导出
  • 小企业会计准则没有以前年度损益调整科目
  • js继承方式及其优缺点
  • 个人出租房可开发票吗
  • 企业所得税申报表在哪里打印
  • mysql安装配置教程csdn
  • 织梦模板首页logo修改
  • 比赛奖金怎么做账
  • 车间劳保费计入什么科目
  • 残疾人就业保障金申报时间
  • 买房返现是什么意思
  • 需要计提坏账准备的有哪些科目
  • 个体工商户个税多久申报一次
  • 返利冲减销售收入还是进费用
  • 用人单位延迟给员工交社保怎么办
  • 调整以前年度费用如何做分录
  • 代发的工资如何做账
  • 长期待摊费用如何评估
  • 政府拆迁赔款会计上怎样做账
  • 税款返点如何做账务处理
  • 怎样修改注册表关闭win11系统杀毒软件
  • wlms.exe是什么
  • win8无法识别存档文件
  • 在linux系统中创建用户账户
  • android开发一般用什么软件
  • opengl缓冲区
  • linux列操作
  • ubuntu重新安装网卡驱动
  • Node.js中的事件循环是什么意思
  • 批处理生成excel
  • unity特色
  • unity-chan
  • js canvas绘制图片
  • Android自定义控件开发入门与实战 百度网盘
  • 外商投资的企业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设