关于变量的理解和函数内参数的引用

首先理解变量包括两种不同数据类型的值:1.基本类型值 2.引用类型值

基本类型值为简单的数据段,源自于以下五种基本数据类型:Undefined、Null、Boolen、Number、String,

                                     var name="tom";

                                     name.age=20;

                                     alert(name.age); //undefined  不能给基本类型的值无法添加属性。

引用类型值为可能由多个值构建的对象,如

                                      var person=new Object();

                                       person.age=20;

                                       alert(person.age); //20  可以给基本类型的值添加属性。

函数内参数的传递:1.基本类型的值传递:

                                                function addTen(num){

                                                    num+=10;

                                                     return num;

                                                  };

                                                      var count = 20;

                                                      var result= addTen(count);

                                                      alert(count);  //20 无变化

                                                      alert(result);  //30

                              2.当传入参数的变量时按引用访问的时候:

                                                        function  setName(obj){
                                                           obj.name='jerry';
                                                            }
                                                            var person=new Object();
                                                            setName(person);
                                                             alert(person.name);  //'jerry'  

此处的obj和person访问的是同一个对象(new Object());即使这个变量是按值传递的,obj也会按引用来访问同一个对象。当为函数内部的obj添加属性时,外部的person也会做出改变。

                                         3.  function  setName(obj){
                                               obj.name='jerry';
                                               obj= new Object();
                                                 obj.name='tom';
                                                }
                                                var person=new Object();
                                                setName(person);
                                                 alert(person.name);  //'jerry'  

此处的obj= new Object();为obj重新定义了一个新的对象。所以obj.name='jerry'和person指向同一个对象。而obj= new Object();obj.name='tom';是一个新对象的引用了,在函数执行完毕后会被销毁。

posted on 2017-04-14 12:08  大鱼小虾米  阅读(302)  评论(0)    收藏  举报

导航