javascript 变量声明和作用域

1.javascript中可以隐式申明变量。当要注意隐式声明的变量总是被创建为全局变量。

                变量作用域仅仅是在函数内部,故在外部调用时会报错(not defined error)    
                    function fun(){
                        var a=9;
                        alert(a);//9
                    }
                    fun();
                    //alert(a); not defined 出错
                    
                未使用var声明的变量将编程全局变量
                    function add(){
                        num=10;
                        alert(num);//10
                    }
                    add();
                    alert(num);//10    

 

 2.javascript中变量的作用域

            var num=1000;
            alert(num);//1000
            fun();
            function fun(){
                var num='a1000';
                function fun1(){
                    alert(num);//undefined
                    var num='b1000';
                    alert(num);//b1000
                }
                fun1();
                alert(num);//a1000
            }            

 3.未声明变量和未赋值变量

在javascript中,未赋值变量的结果也是undefined


                //未声明的变量与已声明的变量
var a; alert(a);//undefined alert(b);//not defined出错

 

 4、例子

        //第一种:
        var a = 'a';
        function fn(){
            b = 'b';
            alert(a);//a
            alert(b);//b
        }
        fn();
        alert(a);//a
        alert(b);//b
        
        //第二种:
        var a = 'a';
        function fn1(){
            //方法中其已经定义了一个变量a
            alert(a);//undefined
            var a = 'b';
            alert(a);//b
        }
        fn1();
        alert(a);//a
        
        //第三种:
        var a = 'a';
        function fn1(){
            //方法中其已经定义了一个变量a
            alert(a);//a
            a = 'b';
            alert(a);//b
        }
        fn1();
        alert(a);//b
        
            //第四种:
            function fn1(){
            //方法中其已经定义了一个变量a
               alert(a);//not defined 出错
               a = 'b';
               alert(a);//不执行
            }
            fn1();
            
            //第五种
            function fn1(){
                alert(a);//undefined
                var flag = 1;
                if(flag){
                    var a = 1;
                }
                alert(a);//1
                //说明在函数内部块级元素内部单独定义的变量,在整个函数内都是可以访问到的。
                //因此,这就需要我们在命名变量时额外注意,避免出现参数冲突的问题。
                
            }
            fn1();
            alert(a);//not defined 出错

//第六种
        
                var name = "The Window";
                var object = {
                name : "My Object",
                getName : function(){
                        return function(){
                            return this.name;
                        };
                    }
                };
                alert(object.getName()());//The Window
                
        
         //第七种
                var name = "The Window";
                var object = {
                name : "My Object",
                getName : function(){
                        var that = this;
                        return function(){
                            return that.name;
                        };
                    }
                };
                alert(object.getName()());//My Object
       

 

      备注:
        关于声明与定义
        声明:只是取个别名或者说是变量,并未分配存储空间
        定义:不仅仅取个别名,而且为之分配了存储控件
        声明与定义的最重要区别就是定义创建了对象并为之分配了内存,而声明却没有分配内存。

 

 

posted @ 2012-02-24 13:54  qingyezhu  阅读(201)  评论(0)    收藏  举报