【javascript】变量作用范围

一、全局变量&局部变量


 

test=""  全局变量

var test=""  局部变量,无块的概念,作用域为function 或者script块

 

二、有意思的特例


 

1.因为没有块的概念,会出现奇怪的结果

<script>
    var scope = "globale";
    function test()
    {
        alert(scope);//打印undefined。因为scope在test函数被重新定义覆盖,即使执行这条语句之前并未重新赋值全局变量。
var scope = "local";
alert(scope); //打印local
}
test();


</script>

效果等同于

<script>
    var scope = "global";
    function test()
    {
        var scope;
        alert(scope); 
        var scope = "local";
        alert(scope); 
    }
    test();
</script>

 2. 例子

<script type="text/javascript">
alert('kuai1:'+i);
function test(){
    var j = 2;
    alert('test:'+i+','+j);
    i = 5;
}
</script>
<script type="text/javascript">
var i = 1;
alert('kuai2:'+i);
function test1(){
    alert('test1:'+i+','+j);
}
test();
test1();

//执行顺序 alert('kuai1:'+i); Error,因为i在第一个script块中未定义 //alert('kuai2:'+i); 弹窗kuai2:1 因为i在第二个script块中定义
//test() 弹窗test:1,2   如果function test()里面的i=5修改为var i=5就会弹窗出test:undefined,2
//test1() Error,因为j未定义
</script>

posted @ 2014-12-04 13:55  空城夕  阅读(286)  评论(0)    收藏  举报