JavaScript 作用域和全局变量

1,864 阅读2分钟

作用域指的是可以访问的变量集合,我们可以理解为:作用域就是起作用的区域 在 JavaScript 中有两种作用域类型: 私有作用域和全局作用域

1.私有变量

在 JavaScript 函数中声明的变量,称为私有变量,只能在函数内部访问它们。

实例

 console.log(a)
// 此处的代码不能使用 a 变量
var f = function(){
        var a = 100;
        console.log(a)// 此时可以使用,内部赋值为100
    }

在此时,a便是fn函数的私有变量,在函数体外不能获取到。

2.全局变量

函数外声明的变量,称为全局变量

实例

 var a =12;//全局变量
    var f = function(){
        var a = 100;
        console.log(a)// 内部赋值为100
    }
    console.log(a)//12  全局的这个a和私有的a没有关系

3.上级作用域

实例

var b =10;
    var f2 = function(b){
        console.log(b);//由于在函数体内没有声明,所以 b 的值就要到全局去找,
        b = 200;
        console.log(b)// 给 b 赋值:200,由10变为200,此时输出值为200
    }
    f2()
    console.log(b)// 此时全局变量已经变成200

上级作用域查找规律: 上级作用域是谁,就看这个函数在哪个作用域声明定义的,对于私有作用域中的某些变量,若没有在私有作用域中声明过,那么函数执行时,就会去上级作用域查找改变量,上级作用域若没有该变量,则接着向上级查找,直到查找到全局作用域,若扔没有,则报错

4.函数的执行

函数执行过程:先开辟一个私有作用域(栈内存),形参赋值,变量提升,然后代码从上向下执行;私有变量有形参和在私有作用域中声明过的变量,其他的变量都是上级作用域的。

以上就是本文的全部内容,希望对大家的学习有所帮助。