如果在任何函数定义之外声明了一个变量,则该变量为全局变量,且该变量的值在整个持续范围内都可以访问和修改。
如果在函数定义内声明了一个变量,则该变量为局部变量。每次执行该函数时都会创建和破坏该变量;且它不能被该函数外的任何事物访问。
局部变量一定要以var申明,否则是全局变量。
一个局部变量的名称可以与某个全局变量的名称相同,但这是完全不同和独立的两个变量。因此,更改一个变量的值不会影响另一个变量的值。在声明局部变量的函数内,只有该局部变量有意义。
例子:
<script>
var a =1;
function test(){
alert(window.a); //a为1,这里的a是全局变量哦!
var a=2; //局部变量a在这行定义
alert(a); //a为2,这里的a是局部变量哦!
}
test();
alert(a); //a为1,这里并不在function内,a的值为全局变量的值
</script>
<script>
var a =1;
function test(){
alert(a); //a为undefined!
a=4
alert(a); //a为4,这里的a还是局部变量!
var a; //局部变量a在这行声明
alert(a); //a还是为4,这是因为之前已把4赋给a了
}
test();
alert(a); //a为1,这里并不在function内,a的值为全局变量的值
</script>
<script>
var cookie=“i am cookie”;
function test(){
cookie=“i am not fei cookie”;//以为此处变量没有加var,则是修改全局变量的值
}
test();
document.write(cookie);//test函数执行后输出 i am not fei cookie
</script>
<script>
var cookie=“i am cookie”;
function test(){
var cookie=“i am not fei cookie”;// 定义局部变量的值,test函数执行后不会影响到全局的cookie
window.cookie=cookie; // 第一个cookie是全局的函数外部定义的,后面的cookie是在函数内定义的
}
test();
document.write(cookie); // 输出 i am not fei cookie
</script>