函数作用域和声明提前

函数作用域是指在函数内声明的变量在函数体内始终是可见的,这意味着在函数体内,变量在声明之前就可以直接。javascript这个特性被称为声明提前,
即不管是在函数体内的for,if等语句块中定义的变量,都会被提前至函数顶层定义(function t(){var i;...})


//
与java等语言的变量的块级作用域不同的是javascript是函数作用域 function testScope(o){ var i=0; //var j;所有定义在for,if的变量和这种其实是一个意思,javascript会把下面定义的变量提前至变量顶层 console.log(j); //console.log(m); if(typeof o=="object"){ var j=1;//j会被提前至函数顶层定义,var j
for(var k=0;k<10;k++){//k会被提前至函数顶层定义,var k
console.log(k); } console.log(k); }
//var m=0;//k会被提前至函数顶层定义,var k
console.log(j); } testScope({x:
1});
    var scope="global";
    function f(){
        console.log(scope);//undefined        
     var scope="local";//javascript中,会把变量拿到函数最顶层定义 console.log(scope);//local }//等价于下面 f(); function ff(){ var scope; console.log(scope);//undefined
scope
="local"; console.log(scope);//local }//等价于上面 ff();
原文地址:https://www.cnblogs.com/changshuo/p/3341913.html