关于javaScript中for循环和if语句作用域的理解

理解javaScript的执行原理和作用是学习javaScript的核心。而对于作用域的理解也是很多学习javascript最头疼的地方,今天在看书的时候又在次对执行环境的作用域有了新一层的理解。作为一枚刚学习javascript的菜鸟,假如哪里有不对的,希望大家帮忙指出。

学习javascript的同学都知道,函数执行中对于变量是有作用域一说的,简单的来说就是局部作用域可以调用外部的变量,而外部函数是没有办法调用内部变量的。而对于for语句和if语句是个特殊的例子。举个栗子:

if(true){
 var color = "blue";
}
alert(color);   //"blue"

假如按正常理解的话,alert(color)执行是不会显示blue的,因为定义的color是局部变量,在全局环境下是没有办法调用color的,但在javascript中,if语句中的变量声明会将变量添加到当前的执行环境中。在这里指的是全局环境,假如还有一层作用域,指的就是alert()执行的当前作用域。for语句也是一样的。

for(var i=0;i<10;i++){
 doSomething(i);
}
alert(i);   //10

对于javascript来说,有for语句创建的变量i即使在for循环执行结束后,也依旧会存在于循环外部的执行环境中。

理解函数的执行环境是javascript中最为重要的一个概念,也希望大家在学习javascript的时候要沉住气,仔细琢磨。

陈健的个人博客,记录生活所见所感、学习笔记。专注于Web前端_SEO教程_读书心得。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

返回主页看更多
狠狠的抽打博主 支付宝 扫一扫