zoukankan      html  css  js  c++  java
  • 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
           

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

  • 相关阅读:
    临时表和表变量
    北航发生一场悲剧:计算机学子复习过程中突然倒地
    2w+长文带你剖析ConcurrentHashMap~!
    2020年最新ZooKeeper面试题(附答案)
    MQ消息中间件,面试能问些什么?
    设计模式之初体验
    IIS7 下使用ExtJs出现Ext未定义的问题
    修改apache+php上传文件大小限制
    memcache support requires ZLIB解决办法
    Windows下Memcache的安装方法
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2366628.html
Copyright © 2011-2022 走看看