日期:2014-05-16 浏览次数:20450 次
var sco = "global";  //全局变量   
function t() {    
    var sco = "local";  //函数内部的局部变量   
    alert(sco);         //local 优先调用局部变量   
}   
t();             //local   
alert(sco);       //global  不能使用函数内的局部变量  function f(props) {   
    for(var i=0; i<10; i++) {}   
    alert(i);         //10  虽然i定义在for循环的控制语句中,但在函数   
                      //的其他位置仍旧可以访问该变量.   
    if(props == "local") {   
        var sco = "local";   
    alert(sco);    
    }   
    alert(sco);       //同样,函数仍可引用if语句内定义的变量   
}   
f("local");      //10  local   local  var sco = "global";   
function print1() {   
    alert(sco);   //global   
}   
function print2() {   
    var sco = "local";   
    alert(sco);   //local   
}   
function print3() {   
    alert(sco);   //undefined   
    var sco = "local";    
    alert(sco);   local   
}   
  
print1();  //global   
print2();  //local   
print3();  //undefined  local 前面两个函数都很容易理解,关键是第三个:第一个alert语句并没有把全局变量"global"显示出来,function print3() {   
    var sco;   
    alert(sco);   
    sco = "local";   
    alert(sco);   
}  var scope = "global"   //定义全局变量   
function print() {   
    alert(scope);   
}   
function change() {   
    var scope = "local";  //定义局部变量   
    print();              //虽然是在change函数的作用域内调用print函数,   
                          //但是print函数执行时仍旧按照它定义时的作用域起作用   
}   
change();    //golbal var i = 0;   
function getNext() {   
    i++;   
    return i;   
}   
alert(getNext()); //1   
alert(getNext()); //2   
alert(getNext()); //3  一直用getNext函数得到下一个整数,而后不小心或者故意的将全局变量i的值设为0,然后再次调用getNext,function temp() {   
    var i = 0;   
    function b() {   
        return ++i;   
    }   
    return b;   
}   
var getNext = temp();   
alert(getNext());    //1   
alert(getNext());    //2   
alert(getNext());    //3   
alert(getNext());    //4  因为我们平时所说的javascript绝大多数都是指的在客户端(浏览器)下,所以这里也不例外。