代码如下:
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 
}