作为一个初学javascript的萌新,最近刚学全局变量,局部变量和变量作用域,写下一些感想总结,这也是我第一次写博客,希望大家多多指点哈。>=<
变量作用域
一个变量的作用域,是程序源代码中定义这个变量的区域。全局变量具有全局的作用域,在程序中始终有定义, 局部变量只有局部的作用域,在声明它的函数体内及所嵌套的函数体内始终有定义。
var s = "123"; //定义了全局变量s
function first(){
var d = "gg"; //定义了局部变量d
function second(){
function third(){
var tt = "555"; //定义了局部变量tt
}
third();
console.log(d); //=>"gg",可以访问上一级的局部变量
console.log(s); //=>"123",可以访问全局变量
console.log(tt); //=>"tt is not defined"不能访问下一级的局部变量
}
second();
}
first();
first()内嵌套了second(),second()可以访问first()内定义的局部变量和全局变量,但不能访问third()内的tt,同理first()不能访问second()内的局部变量。
在函数内部,局部变量的优先级高于全局变量,如果局部变量和全局变量重名,在运行函数时,函数的局部变量会将全局变量遮盖,如:
var d = "123"; //定义了全局变量d
function demo(){
var d = "gg"; //定义了局部变量d
console.log(d);//=>"gg",全局变量被局部变量覆盖
}
demo();
console.log(d);//=>"123",无法访问不在作用域内的数据,显示全局变量
根据以上两个例子,用通俗的话说,全局变量在程序的任何地方都可以被访问,而局部变量只能被声明它的函数体和其所嵌套的函数体访问。