码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中函数作用域和声明提前

时间:2014-11-25 23:09:42      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   java   for   strong   

javascript不像java等其他强类型语句,没有块级作用域(括号内的代码都有自己的作用域,变量在声明它们的代码段之外不可见)一说,但有自己的独特地方,即函数作用域。

函数作用域:变量在声明它们的函数体内以及这个函数体的任意内部函数体内是有定义的。

如下所示代码,在不同位置定义了变量i、j和k,它们都在同一个作用域内,即在函数体内均是有定义的。

function test(){
    var i=0;        //i在整个函数体内均有定义
    if(true){
        var j=0;    //j在整个函数体内均有定义
        for(var k=0;k<10;k++){    //k在整个函数体内均有定义
            console.log(k);        //输出0~9
        }
        console.log(k);            //输出10
    }
    console.log(j);                //输出0
}
test();

声明提前:变量的声明(不包括赋值)都被提前至函数体顶部。
注意:声明提前是在javascript引擎的预编译时进行的,是在代码开始运行之前。

下面是有关代码及注释:

var i=1;
function test(){
    console.log(i);                //输出undefined
    var i=2;
    console.log(i);                //输出2
}
test();

上述代码可等价如下所示:

var i=1;
function test(){
    var i;
    console.log(i);                //输出undefined
    i=2;
    console.log(i);                //输出2
}
test();

 

javascript中函数作用域和声明提前

标签:style   blog   io   ar   color   sp   java   for   strong   

原文地址:http://www.cnblogs.com/aaron-shu/p/4121915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!