From e751c31fbb61b4df89eda1e34c7bcae64927c105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= <1986456126@qq.com> Date: Mon, 31 Oct 2022 04:06:44 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=BB=BA=202022-10-28=EF=BC=88?= =?UTF-8?q?=E7=AC=AC=E5=85=AB=E6=AC=A1=E4=BD=9C=E4=B8=9A=EF=BC=9A=E9=A2=84?= =?UTF-8?q?=E7=BC=96=E8=AF=91=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.keep" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "09\346\235\216\346\266\233/2022-10-28\357\274\210\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232\357\274\232\351\242\204\347\274\226\350\257\221\357\274\211/.keep" diff --git "a/09\346\235\216\346\266\233/2022-10-28\357\274\210\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232\357\274\232\351\242\204\347\274\226\350\257\221\357\274\211/.keep" "b/09\346\235\216\346\266\233/2022-10-28\357\274\210\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232\357\274\232\351\242\204\347\274\226\350\257\221\357\274\211/.keep" new file mode 100644 index 0000000..e69de29 -- Gitee From b2c037bbb5674d1a871561b2e62064e92ceb1a58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= <1986456126@qq.com> Date: Mon, 31 Oct 2022 04:17:03 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李涛 <1986456126@qq.com> --- .../\347\254\224\350\256\260.txt" | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 "09\346\235\216\346\266\233/2022-10-28\357\274\210\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232\357\274\232\351\242\204\347\274\226\350\257\221\357\274\211/\347\254\224\350\256\260.txt" diff --git "a/09\346\235\216\346\266\233/2022-10-28\357\274\210\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232\357\274\232\351\242\204\347\274\226\350\257\221\357\274\211/\347\254\224\350\256\260.txt" "b/09\346\235\216\346\266\233/2022-10-28\357\274\210\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232\357\274\232\351\242\204\347\274\226\350\257\221\357\274\211/\347\254\224\350\256\260.txt" new file mode 100644 index 0000000..42c97d9 --- /dev/null +++ "b/09\346\235\216\346\266\233/2022-10-28\357\274\210\347\254\254\345\205\253\346\254\241\344\275\234\344\270\232\357\274\232\351\242\204\347\274\226\350\257\221\357\274\211/\347\254\224\350\256\260.txt" @@ -0,0 +1,29 @@ +JavaScript作为动态解释型语言,在程序进行前会通篇扫描检查语法错误。之后进行预编译对基本函数变量等进行预处理,最后才开始逐行解释执行。 + +预编译四部曲 +1.创建AO (AO 即执行期上下文 发生在函数执行的前一刻) + +2.找形参和变量声明,将变量和形参名作为AO属性名,值默认为undefined + +3.将实参值和形参统一 + +4.在函数体里面找函数声明,值赋予函数体。 + +正式执行时,已经预编译过的语句无需再次读取,逐句执行的时候 向AO中拿取变量 + +函数声明整体提升 +GO 即 global object 相当于window windos就是全局的域 + +所有定义在全局的变量都归window所有 在程序执行的前一刻产生 内含许多全局变量 + +对于程序中为声明就直接赋值的变量自动提升为全局变量 也可以看作为window的属性。 + +程序在执行时遇到function声明,会自动整体提升至GO中。当函数执行时,生成AO 后续预编译执行将不再访问。 + +变量 声明提升 +在执行函数预编译的过程中,会先找到函数中的形参和实参以及函数体中的变量声明,提升至AO 默认值为undefined 进行预编译 。 + +正式执行时,已经预编译过的语句无需再次读取,逐句执行的时候 向AO中拿取变量 +———————————————— +版权声明:本文为CSDN博主「frida122」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 +原文链接:https://blog.csdn.net/weixin_45915554/article/details/117571685 \ No newline at end of file -- Gitee