首页 > 代码库 > js中基本类型的值和引用类型的值的比较

js中基本类型的值和引用类型的值的比较

1.动态属性方面的比较

  1)基本类型的值是不能添加属性的,即使不会产生任何错误;

  2)引用类型的值可以动态的添加属性,以便后面的使用;

1 var cat=‘cat‘;
2 cat.name=‘Tom‘;
3 console.log(cat.name);//undefined
4 
5 
6 var mouse={};
7 mouse.name=‘Jerry‘;
8 console.log(mouse.name);//Jerry

2.变量值复制方面的比较

  1)基本类型复制的是原始值,不同变量之间不会相互影响;

  2)引用类型复制的是对象引用地址,不同变量之间会相互影响;

 1 var a=1;
 2 var b=a;
 3 console.log(a);//1
 4 console.log(b);//1
 5 
 6 a=2;
 7 b=3;
 8 console.log(a);//2
 9 console.log(b);//3
10 
11 
12 
13 var c={name:‘letter‘};
14 var d=c;
15 console.log(c.name);//letter
16 console.log(d.name);//letter
17 
18 c.name=‘word‘;
19 
20 console.log(c.name);//word
21 console.log(d.name);//word

3.传递参数方面的比较

  js中所有的参数传递都是“按值传递”,因此在传递参数方面,基本类型数据传递的依然是原始值,引用类型数据传递的则是引用对象的地址

 1 function addTen(num){
 2   num += 10;
 3   return num;
 4 }
 5 
 6 var count=20;
 7 var result=addTen(count);
 8 
 9 console.log(count);//20
10 
11 console.log(result);//30
12 
13 function setName(obj){
14   obj.name=‘Tom‘;
15 }
16 
17 var mouse={name:‘Jerry‘}
18 setName(mouse);
19 
20 console.log(mouse.name);//Tom

4.类型检测方面的比较

  1)基本类型用typeof检测时,返回的可能是string,boolean,number,undefined

  2)引用类型用typeof检测时,除函数返回的值为function外,其余返回的会是object

 1 var a = ‘str‘;
 2 var b = 3;
 3 var c = true;
 4 
 5 var d = {};
 6 var e = [];
 7 var f = undefined;
 8 var g = null;
 9 
10 console.log(typeof a);//string
11 console.log(typeof b);//number
12 console.log(typeof c);//boolean
13 console.log(typeof d);//object
14 console.log(typeof e);//object
15 console.log(typeof f);//undefined
16 console.log(typeof g);//object

 

js中基本类型的值和引用类型的值的比较