Javascript范围的再探索

Javascript范围的再探索
《黄金密码》的第一篇文章:

js没有块级作用域(可以通过自己或其他方法关闭)。只有函数级范围,函数可以在变量之外找到,函数内部的变量不能在外部找到。

第一次尝试:
为什么会这样
var a=10;
功能AAA(){ / / step-4
警报(一); / / step-5 ->执行警戒,此时才发现外面= 10,所以弹盒10
}
功能BBB(){ / / 2
var a=20;
AAA(); / / STEP - 3
}
/ /定义函数的调用是无用的,所以这里是步步房
血脑屏障(); / /步步
事实上,每个人都应该理解这个原则,它容易出错,从顶部改变。

二试:
为什么会这样因为当B被分配到A时,B还没有被定义,所以A是未定义的,B是10。

第二密码:

变量的查找是最近的原则,寻找var定义的变量,并在未找到的时候寻找外层。

看:
为什么会这样这其中有两个原因,一是preparsing,和两个是附近搜索
var a=10;
函数AAA(){
警报(a);未定义的。当寻找A时,它会在函数中找到。由于预解析的功能,A在此时是未定义的,所以它永远不会寻找外部的10个。
var a=20;

前/分析
VaR
警报(a);
var = 20;*

}
(AAA);

注意:
这证实了第二个,虽然这是一个接近的规则,它的附近寻找var声明的变量,这是因为没有var声明的变量是全局的,它只能对A的值,上面的是因为一个VaR不在功能的发现,让我们去寻找它,一眼就找到它,所以会得到10的警戒;但是,后一个是20 = 20,的确,但警报尚未执行的。

看看它。
下面的示例是对js函数域的更详细的验证:
这是因为在警报(a)时,A的BBB功能是20,但它是为警报(a)这一句是警报的一部分(A)找不到BBB函数的A,所以AAA函数找不到A,然后找出,查找,找到10。

金码第三:

当具有本地变量名的参数时,优先级是相同的。

例:
还有:当引用被传递时,基本类型传递值,引用类型被引用。
var a=5;
var;
B+=3;
警报(a);5

var a = {1,2,3};
var;
B.push(4);
警报(一); / / {三};
上面的代码没有问题,但它不一样。
因为B是分配不点A.

此外,参数的范围类似于变量。
相比之下,这两个:
以上是参数是基本类型,并且只传递值,并传递以下类型的引用:(还包含重新分配的情况)。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部