关于javascript中的函数作用域

来源:互联网 发布:电子小报软件 编辑:程序博客网 时间:2024/06/03 23:52

var scope = "global";


function f()

{

alert.log(scope);  //输出 “undefined”,而不是“global”

var scope = "local";// 变量在这里赋初值,单变量本身在函数体内任何地方军事有定义的

console.log(scope);//输出“local”

}


你可能会误以为函数中的第一行会输出“global” ,因为代码还没有执行到var语句声明

局部变量的地方。其实不然,由于函数作用域的特性,局部变量在整个函数体始终是有

定义的,也就是说,在函数体内局部变量遮盖了同名全局变量。尽管如此,只有在程序执行到

var语句的时候,局部变量才会被真正的赋值。因此,上述过程登记于:将函数内的变量

声明“提前”至函数体顶部,同事变量初始化留在原来的位置:


function f()

{

var scope; //在函数顶部声明了局部变量

alert(scope);//变量存在 ,但其值是“undefined”

scope = "local";//这里将其初始化并赋值

alert(scope);//这里他具有了我们所期望的值

}


0 0