JavaScript变量作用域详解

JavaScript变量作用域详解

        在JavaScript中,变量可以是全局的,也可以是局部的,在讨论全局变量于局部变量时,起使就是在讨论变量的作用域(scope)

        全局变量(global variable)可以在脚本中的任何位置被使用,一旦在脚本中定义了全局变量,就可以在任何位置使用它(包括在函数内部),全局变量的作用域是整个脚本。

        局部变量(local variable),只存在于声明它的函数内部,在函数外部无法使用。局部变量的作用域仅限于在某个特定的函数内部。 

        我们在函数里既可以使用,全局变量,也可以使用局部变量。可以使用 var 关键字明确地为函数变量设定作用域。规则如下:

        如果在某个函数中,使用了var 来定义变量,那个变量就会被视为局部变量,只存在于函数的上下文中,外部无法使用。反之,若是没有使用var 关键字,那个变量就会被视为全局变量,如果脚本中已经存在一个与之同名的全局变量,这个函数就会改变那个全局变量的值。

        例子:

<script type="text/javascript">
    function square(num){
        total = num * num;//没有使用var关键字来定义
        return total;
    }
    var total = 50;
    square(20);
    console.log(total);//total 值为400.
    </script>

        全局变量total 的值变为了400,因为未把这个函数内部的total变量明确的声明未局部变量,这个函数把名字同样是total 的那个全局变量的值也给改变了。

        正确示例:

  function square(num){
        var total = num * num;
        console.log(total);
    }
    square(20);
    var total = 50;
    console.log(total);//输出结果为50;

       现在,全局变量total 变得安全了,在怎么调用square()函数也不会改变它。

        所以在函数中定义变量时,要尽量使用var关键字来定义,这样就能避免任何形式的二义性隐患。

猜你喜欢

转载自blog.csdn.net/yufanhui/article/details/80967082