日期:2014-05-16 浏览次数:20453 次
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绝大多数都是指的在客户端(浏览器)下,所以这里也不例外。