JavaScript - 函数内的预解析

本文详细阐述了JavaScript中函数的定义与调用过程,包括堆内存的分配、函数体的存储与执行、形参赋值及预解析等步骤。在函数调用时,强调了形参赋值在预解析之前的顺序,并提醒避免函数内部与形参同名的变量定义,以及函数名与变量名的重名问题。

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

1. 函数定义阶段

1. 在 堆内存 中开辟一段储存空间

2. 把函数体内的代码当做 字符串 放在开辟出来的存储空间内

3. 把函数名放在 栈内存 中,把堆内存中的空间地址赋值给 栈内存的变量

2. 函数调用阶段

1. 按照 栈内存 中变量存储的地址找到函数的存储空间

        - 如果这个空间不是一个函数存储空间,那么直接报错 xxx is not a function

2. 在 调用栈 中开辟一段新的 函数执行空间

        - 把函数存储空间内的形参、代码全部复制过来

3. 在这个执行空间内,进行形参的赋值

        - 赋值是在函数调用空间内执行的

4. 在这个执行空间内,进行函数内代码的预解析

        - 对函数体内存储的一段 字符串 进行通读并解释

5. 把函数体内的 字符串 当做 js 代码来执行

        - 如果是合法的 js 代码,那么直接执行

        - 如果不合法,此时才会报错

6. 代码执行完毕后,此次开辟的函数执行空间销毁

3. 总结

- 在函数的调用过程中先 形参 赋值然后预解析

- 不要在函数内定义和形参一样的函数名,这样形参就变的无意义了

- 函数名和变量名不要重名

- 不管是函数还是变量,进行先声明后使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值