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
       

 

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

 

 

你可能感兴趣的:(JavaScript)