您的位置:首页 > Web前端 > JavaScript

js变量引用(指针)

2014-02-27 11:53 141 查看
1.变量类型:基本类型和引用类型

在js 中,基本类型:Number,Boolen,null,String,Underfined 存放在栈内存中,数据长度是固定的。

而引用类型,Object存在堆内存中,数据长度是变化的(同时有栈内存中有一个指针指向这个Object的)。

2.引用类型的Object能任意指定新的成员,但是对于基本类型就是无效。

var str=’ahui’;

str.name=’xiaoming’;//无效。

alert(str.name);//undefined

3.关于复制

基本类型:在新的栈内存中生成一个副本

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);//strb

4.传参数——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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: