js变量引用(指针)
1.变量类型:基本类型和引用类型
基本类型:Number,Boolen,null,String,Underfined 存放在栈内存中,数据长度是固定的。
引用类型:Object存在堆内存中,数据长度是变化的(同时有栈内存中有一个指针指向这个Object的)。
2.引用类型的Object能任意指定新的成员,但是对于基本类型就是无效。
var str=’ahui’;
str.name=’xiaoming’;//无效。
alert(str.name);//undefined3.关于复制
基本类型:在新的栈内存中生成一个副本var a='stra',b;
b=a;//这里会所b数据拷贝到a所在的栈内存中
b='strb';//a='stra'引用类型:在新的栈内存中存一个相同的指针
也就是说:其赋值不会开辟新内存空间。两个变量会保存完全相同的数据。
var objA=new Object();
objA.name='stra';
var objB=objA;//objB在栈内存的指针和objA在栈内存中的指针是值是相同的——指向同一个堆块
objB.name='strb';
alert(objA.name);//strb
alert(objB.name);//strb4.传参数——js中所有的参数都是按值传送的,而不是按引用。
(这一点等同于复制)注:按值传递并不意味着你所传参数不会因为函数的执行而受影响。如果参数本身是引用类型,那么所复制的参数本身也包含相同的指针,参数的改变当然会影响到所传的变量。
var o=new Object; o.name='ahui'; function func(obj){ obj.name='This variable is changed'; } func(o); alert(o.name);//This varibale is changed
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!