学科分类
目录
JavaScript网页编程

全局变量和局部变量

下面我们通过代码演示全局变量和局部变量的区别,具体代码如下。

// 全局作用域

var num = 10;    // 全局变量

function fn() {

 // 局部作用域

 var num = 20;   // 局部变量

 console.log(num); // 输出局部变量num的值,输出结果:20

}

fn();

console.log(num);  // 输出全局变量10的值,输出结果:10

在上述代码中,全局变量num和局部变量num虽然名称相同,但是它们互不影响,在fn()函数外获取的num的值为10,在fn()函数内获取到的num的值为20。

需要注意的是,函数中的变量如果省略var关键字,它会自动向上级作用域查找变量,一直找到全局作用域为止。示例代码如下。

function fn() {

 num2 = 20;

}

fn();

console.log(num2);  // 输出结果:20

在上述代码中,fn()函数中的“num2 = 20;”首先会在fn()函数的局部作用域中查找是否存在num2变量,如果不存在,则到上级作用域,也就是全局作用域中查找。由于在全局作用域中也没有num2变量,此时就会在全局作用域下创建一个全局变量num2。

通过以上对比可以看出,在全局作用域下,添加或省略var关键字都可以声明全局变量;而在函数中,添加var关键字声明的变量是局部变量,省略var关键字时,如果变量在当前作用域下不存在,会自动向上级作用域查找变量。局部变量只能在函数内部使用,函数的形参也属于局部变量。从执行效率来说,全局变量在浏览器关闭页面的时候才会销毁,比较占用内存资源,而局部变量在函数执行完成后就会销毁,比较节约内存资源。

点击此处
隐藏目录