javascript函数作用域示例代码

发布时间:2019-11-29编辑:脚本学堂
分享下javascript作用域的几个例子,javascript中没有块级作用域,可以使用函数作用域代替,这里分享下js作用域的使用方法,供大家参考。

javascript可以使用函数作用域(function scope),实现块级作用域的功能:
变量在声明它的函数体以及这个函数体嵌套的任意函数体内都是有定义的。 在如下代码中,在不同位置定义的i,j和k,他们再同一个作用域内都是有定义的。

例子:
 

复制代码 代码示例:
function text(o)  
{  
    var i=0;  
    alert(typeof o);  
    if(typeof o == "string")  
    {  
        var j=0;  
        for(var k=0;k<10;k++)  
        {  
            alert(k);//输出0-9  
        }  
        alert(k);//输出10  
    }  
    alert(j);//输出0  
}
 

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

这意味着变量在声明之前甚至已经可用。
javascript的这个特性被非正式的称为声明提前(hoisting),即javascript的函数体内声明的所有的变量(不涉及赋值)都被“提前”至函数体的顶部。

例子:
 

复制代码 代码示例:
var global="globas";  
function globals()  
{  
    alert(global);//undefined  
    var global="hello QDao";  
    alert(global);//hello QDao  
}
 

由于函数作用域的特性,局部变量在整个函数体始终是有定义的,也就是说在函数体内部变量遮盖了同名的全局变量
尽管如此在程序执行到var语句的时候,局部变量才会被真正的赋值,因此,上述过程等价于:
将函数内的变量声明“提前”至函数体顶部,同事变量初始化留在原来的位置:

例子:
 

复制代码 代码示例:
var global="globas";  
function globals()  
{
    var global;  
    alert(global);//undefined  
    global="hello QDao";  
    alert(global);//hello QDao  
}

以上介绍了几个javascript函数作用域的小例子,希望对大家有所帮助。