JavaScript没有块级作用域

    xiaoxiao2025-07-06  4

    由于JavaScript没有块级作用域,因此其与其它语言有一些的不同,比如在C语言中,由花括号封闭的代码块都有自己的作用域,因而支持根据条件来定义变量。例如

    if(true){

    var color="blue";

    }

    alert(color);   //"blue"

    这里是在一个If语句中定义了变量color。如果在Java c中color会在If语句执行完毕后被销毁。但在JavaScript中,if语句的变量声明会将变量添加到当前的执行环境(在这里就是全局环境)中。在使用for语句是由其要牢记着一差异

    for(var i=0; i<10;i++){

    doSomething(i);

    }

    alert(i); //10

    对于有块级作用域的语言来说,for语句初始化变量的表达式所定义的变量,只会存在于循环的环境之中。而对于JavaScript来说,由for语句创建的变量i即使在for循环执行结束后,也依旧存在于循环外部执行环境中。

    附加:

    使用var声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在with语句中,最接近的环境是函数环境。如果初始化变量是没有使用var声明,改变量会自动被添加到全局环境。

    function add(num1,num2){

     sum=num1+num2;

    return sum;

    }

    var resutl(10,20);

    alert(sum); //30

    转载请注明原文地址: https://ju.6miu.com/read-1300404.html
    最新回复(0)