javascript的作用域


1、理解作用域:

作用域的用途:保证对执行环境有权访问的所有变量和函数的有序访问。

有个例子可以很好的理解作用域的存在:

var num1=1;
function getNum(){
    
    var num2="2";

    function getNum2(){
        var num3="3";
        //在这最里边的函数getNum2(),可以访问到num1,num2,num3
    }
    //在在这个函数getNum(),可以访问到num1,num2,但是访问不到num3;
    
}
//在函数外边,只能访问到num1;访问不到num2,num3

  所以:函数的内部环境可以通过作用域链访问所有比它大于一级以上的所有的外部环境。反之,外部环境是不能访问比它小的任何环境变量和函数的。

2、JavaScript没有块作用域。

在其他大部分语言中,由括号封闭的代码块都有自己的作用域。我们用2个例子对比一下。

java:

for(int i=0;i<=10;i++){
	System.out.println("before:"+i);
}
System.out.println("after:"+i);//这里i会报错,因为在执行完语句后i就被立即销毁了。

 JavaScript:

for(var i=0;i<10;i++){
    console.log("before:"+i)
}
console.log("after:"+i);//这里输出10;因为JavaScript没有块级作用域,在执行完循环之后依旧存在于循环外部的执行环境中。

(记于2020.09.19   night:22:11)

(修改于:XXx)