关于变量的理解和函数内参数的引用
首先理解变量包括两种不同数据类型的值: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';是一个新对象的引用了,在函数执行完毕后会被销毁。
浙公网安备 33010602011771号