JavaScript变量做用域

变量的做用域,字面意思来理解就是变量在哪些区域能够起做用能够被访问。函数

JavaScript中能够认为:  定义在函数外面的变量,叫作全局变量spa

            定义在函数内部的变量,叫作局部变量code

全局变量,做用域是整个文档,能够被文档内的任意函数访问调用blog

 例如:ip

        function fn1() { console.log(scope); } var scope = "这是一个全局变量"; function fn2() { console.log(scope); } fn1(); fn2();

打印结果:作用域

 

由于scope是一个全局变量,因此函数 fn1 和 函数 fn2 均可以访问变量scope文档

 

局部变量的做用域仅在定义它的函数中io

例如:console

        function fn(){ var scope="这是一个局部变量"; console.log("函数内调用:"+scope); } fn(); console.log("函数外调用:"+scope);

执行结果:function

 

 scope的做用域是函数fn  因此函数外调用就会会报错

 外面调用不到的主要缘由是由于局部变量的做用范围仅在函数中,当函数执行完成后a就会自动被销毁

 

 假如咱们定定义了一个全局变量后,又在函数中定义了一个同名的局部变量,这时候会发生什么呢?

        var scope = "这是一个全局变量"; function fn(){ console.log(scope); var scope="这是一个局部变量"; console.log(scope); } fn(); console.log(scope);

 

咱们先在函数外先执行fn 而后再打印scope

这是咱们看到的执行结果是这样的:

 

 执行fn时,第一次打印scope时,局部变量还未定义,打印的是undefined,而不是全局变量。

咱们能够这样认为:一旦在函数中定义了局部变量,那么这个局部变量名字若是和全局变量名相同,那么这个同名的全局变量将没法直接在函数中使用了,在函数内部局部变量的优先级高于全局变量。

 

JavaScript 容许在定义变量时不使用关键字var。不管是在函数内部仍是外部,若是不使用var定义,都会默认为定义的是一个全局变量

        function fn() { scope = "不使用var定义变量"; } fn(); console.log(scope);

 

 

打印结果为:

 

 执行过fn以后,就至关于定义了一个全局变量scope

相关文章
相关标签/搜索