• 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
           

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

  • 相关阅读:
    02-04UML类图之--关联关系(Association)
    02-03UML类图之--实现关系(Implementation)
    02-02UML类图之--泛化关系(generalization)
    02-01UML类图之--依赖关系(Dependence)
    01-07.合成复用原则(Composite Reuse Principle)
    01-06.迪米特法则(Demeter Principle)
    算法 - 二叉搜索树的第k个结点
    算法
    InteliJ IDEA社区版 两款插件变身旗舰版
    intelliJ idea自定义代码折叠
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2366628.html
Copyright © 2020-2023  润新知