JavaScript函数作用于之声明提前

来源:互联网 发布:中国气象数据网 编辑:程序博客网 时间:2024/06/09 19:23


    JavaScript的作用域是指在函数内声明的所有变量在函数体内始终是可见的。

有意思的是,这意味着变量在声明之前甚至已经可用。

var  scope="globle";function f(){    console.log(scope);//输出“ undefined”,而不是“global”    var scope="local";    console.log(scope);//输出“local”}

你可能会误以为函数中的第一行会输出“globle”,因为代码还没有执行到var声明局部变量的地方。

其实不然,由于函数作用域的特性,局部变量在整个函数体始终是有定义的,也就是说,在函数体内

局部变量遮盖了全局变量。因此,上述过程等价于:将函数内的变量声明“提前”值函数体顶部吗,

同时变量初始化留在原来的位置:

var  scope="globle";function f(){    var scope;    console.log(scope);//输出“ undefined”,而不是“global”    var scope="local";    console.log(scope);//输出“local”}


0 0