JS范围的实例分析

JS范围的实例分析
首先,看看作用域的概念:函数——读、写、域——范围或空间。范围:可以用来读和写操作的范围或空间。

第二,查看浏览器读取js文件步骤脚本标记的内容)。

第一步:预解析-根据var函数找出可能的参数或函数,并将它们放入内存(相当于仓库)。

例1:
警报(a)
var a=1
功能FN1(){ alert(2)}
根据VaR和功能,你可以找到:一个FN1

在预解析过程,变量自动赋值给变量未定义,即a定义;函数本身的功能本身,即FN1 =功能FN1(){ alert(2)}。

所以preparsing:a定义,FN1 =功能FN1(){ alert(2)}

如果函数和变量名,所以只有值。

例2:
警报(a)
var a=1
函数A(){警报(2)}
var a=10
根据var和函数,您可以找到:111

在预解析过程中:a =未定义的,a函数a(){警报(2)},a =未定义

在preparsing,只有=函数(){ alert(2)}

例3:

如果在情况2中var a = 10是后跟一个函数函数A(){警报(4)}

然后,预解析的结果变成:A =函数A(){警报(4)},因为最后一个值将覆盖前一个值。

第二步是:从代码的渐进性解读

例4:

首先,我们知道下面的代码preresolution:=函数(){ alert(4)}
当A =函数(a){警报(4)}时,请注意(a)读此行,因此打印出函数(a){警报(4)}
var = 1 读这行是,是重新分配A,所以A = 1
当a = 1时,读取(a)/读取此行,因此打印输出为1。
函数A({警报)(2)}读取此行,而不是重新赋值,并且不打印任何内容,因为该函数未被调用。
当a = 1时,读取(a)/读取此行,因此打印输出为1。
var = 10 读这行是,是重新分配A,所以A = 10
当a = 10时,读取(a)/读取此行,因此打印输出为10。
函数A({警报)(4)}读取此行,而不是重新赋值,并且不打印任何内容,因为该函数未被调用。
当a = 10时,读取(a)/读取此行,因此打印输出为10。
对贸易数据交换上述概念的内容,有助于理解分析前,也没有使用域的预分析,在分析前------------------------域发生域时

例5:

下面的代码预览:a定义,FN1 =函数(){ alert(FN1){ alert(一)var a = 2;},然后开始执行代码
var = 1 读此行,将其赋值给a,a=1
功能(FN1){ alert();var a = 2;} / /读这一行,没有发生什么
(FN1); / /读这条线的函数被调用时,它也分为两个步骤
1,函数被称为函数域的第一个解析,并将它的预解析放在自己的仓库中。
2,逐行解读代码:当读取警报(A)时,函数域的预解析结果是未定义的,因此未定义打印。当您读取var a = 2时,将预解析结果转换为a=2。
警报(a);读此行时,a = 1,打印出1
示例6:根据示例5进行了一个小的更改,var a = 2被更改为a=2,然后输出是不同的。
var = 1 1
功能FN1(){ alert();a = 2;}
(FN1); / /函数调用时,因为里面有功能无无功,在预解析没有结果。当警报(一)在执行函数时,一个是在功能(父域),这时一个= 1,所以1是打印出来。
函数a = 2是全局变量,所以a=2
警报(a);由于a = 2,所以打印出2
示例7:在示例6的基础上,更改
var a=1
(一){ alert函数fn1();a = 2;}
(FN1);
警报(a);
结果将是:定义,1。想想吧。提示:功能FN1(一)等效于作用FN1(VaR)

以上是本文的全部内容,希望本文的内容能给大家的学习工作带来一定的帮助,同时也希望能给予更多的支持
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部