预解释和作用域

本文介绍了JavaScript的预解释机制,带var和function关键字会提前声明或定义,var先声明,function声明和定义都完成。还阐述了预解释的7个步骤,以及作用域相关内容,包括作用域的形成、销毁条件,同时说明了栈内存和堆内存的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预解释的机制:带var的关键字和function关键字都会进行预解释
预解释:(一种毫不节操的机制)在JS代码之前,首先找到所有带var关键字和function关键字的,提前声明(declare)或者定义(defined)

  • var:在代码执行之前只是先声明(默认值是Undefined)然后代码才开始从上向执行定义赋值这一步
  • function:在代码执行之前把声明个定义两部分都完成了,代码执行的过程中遇到function不再重复定义,只有遇到执行函数的代码,才执行

预解释7步骤:

  • 不管条件是否成立,都进行预解释
  • 预解释只发生在=左边,=右边的不预解释
  • 匿名函数闭包常用的方式不进行预解释
  • 函数中return后面的代码不执行,但预解释,return返回的值不预解释
  • 对于重名的不重复声明,但是重复定义
  • 预解释只发生在同一个脚本块中
  • 预解释发生在当前作用域下

作用域:(函数周期)
从window下的预解释开始,声明加定义了一个函数(引用数据类型,所以首先开一个堆内存,把函数中的代码当做字符串存储起来)代码从上到下执行,执行我们的函数,形成了一个私有所用于,在私有作用域中从新的预解释,然后私有作用域下代码执行,还是同样的步骤,–》但是当我们完成返回一个地址(返回一个函数或者是一个对象)并且在外面被其他的东西占用这个地址(var 变量=地址或者元素的绑定事件等于这个地址)这种情况下,新形成的作用域就不销毁,如果外面没有占用,那就不立即销毁。



栈内存:1、用来运行代码的。2、用来存储基本数据类型值的
堆内存:1、用来存储引用数据类型的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值