摘要:一预解析找一些东西参数找要干活的东西变量在正式运行之前,都赋值为未定义函数在运行之前,取整个函数二逐行解读表达式参数都可以赋值遇到重名的,只留下一个变量和函数重名,只留下函数函数调用函数是一个作用域,遇到作用域都会按照先进行预解析,然
一、预解析
找一些东西:var function 参数(找要干活的东西)
变量var 在正式运行之前,都赋值为未定义
function 函数在运行之前,取整个函数
表达式=、+、-、*、/、++、--、!、%.....number()、参数都可以赋值
①遇到重名的,只留下一个
变量和函数重名,只留下函数
②函数调用(函数是一个作用域,遇到作用域都会按照先进行预解析,然后逐行解读的过程执行)
先局部找参数,局部找不到就向上一级找(作用域链)
解析过程:
1)预解析:
第9行:没操作 第10行:a为未定义 第11行:没操作 第12行:a为function a(){ alert(2);} 第13行:没操作 第14行:a为function a(){ alert(2);} 第15行:没操作 第16行:a为function a(){ alert(4);} 第17行:没操作
2)逐行解读:
第9行:弹出function a(){ alert(4);} 第10行:赋值操作 a=1; 第11行:弹出1 第12行:没操作 第13行:弹出1 第14行:a=3 第15行:弹出3 第16行:没操作 第17行:弹出3
例2:
执行结果:未定义,1;
1)预解析
a未定义 函数
2) 逐行解读:
a=1; 函数调用:1)预解析:遇到var 局部变量a为未定义 2)逐行解读:弹出未定义 局部a赋值为2 弹出全局变量a,值为1
例3:
结果:1,2
例4:
结果:未定义,1
例5:
结果:1,1
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/87852.html
摘要:原文原文原文词法作用域作用域有两种常见的模型,一种叫做词法作用域,一种叫做动态作用域。其中词法作用域更常见,被大多数语言采用,包括。值得注意的是,一个函数作用域只有可能存在于一个父级作用域中,不会同时存在两个父级作用域。 原文: 原文1 | 原文2 Lexical Scope - 词法作用域 作用域有两种常见的模型,一种叫做 词法作用域 Lexical Scope,一种叫做...
摘要:下面我们就罗列闭包的几个常见问题,从回答问题的角度来理解和定义你们心中的闭包。函数可以通过作用域链相互关联起来,函数内部的变量可以保存在其他函数作用域内,这种特性在计算机科学文献中称为闭包。 写这篇文章之前,我对闭包的概念及原理模糊不清,一直以来都是以通俗的外层函数包裹内层....来欺骗自己。并没有说这种说法的对与错,我只是不想拥有从众心理或者也可以说如果我们说出更好更低层的东西,逼格...
摘要:全局变量局部变量全局函数一段也是一块域。此时打印的自然是,要记住相当于,所以这时候改变的是局部变量,并没有影响到全局变量,所以第二次打印的依然是。 在熟悉了浏览器的工作原理之后,今天我们来讲讲浏览器在从服务器获取到网页文件之后是如何解析的。了解了这个基础知识,对敲出来的代码,质量会有不小的提升。 一、浏览器如何解析html html文件在没有写入html标签之前和txt文本是一个性质的...
摘要:全局变量局部变量全局函数一段也是一块域。此时打印的自然是,要记住相当于,所以这时候改变的是局部变量,并没有影响到全局变量,所以第二次打印的依然是。 在熟悉了浏览器的工作原理之后,今天我们来讲讲浏览器在从服务器获取到网页文件之后是如何解析的。了解了这个基础知识,对敲出来的代码,质量会有不小的提升。 一、浏览器如何解析html html文件在没有写入html标签之前和txt文本是一个性质的...
阅读 2995·2023-04-25 18:06
阅读 3225·2021-11-22 09:34
阅读 2837·2021-08-12 13:30
阅读 2018·2019-08-30 15:44
阅读 1632·2019-08-30 13:09
阅读 1614·2019-08-30 12:45
阅读 1675·2019-08-29 11:13
阅读 3591·2019-08-28 17:51