变量类型: 基本类型,引用类型
基本类型:undefined,null,Boolean,Number,String
引用类型:可能由多个值构成的对象。
下面看下 基本类型和引用类型的区别:
1.动态的属性:
//引用类型 var Person=new Object(); Person.name='joe'; console.log(Person.name); //joe //基本类型 var Person2='mike'; Person2.name='joe'; console.log(Person2.name);//undefined 2.复制变量值
//基本类型 var num=5; var num2=num; //5 // //使用num初始化num2时,num2也等于5,但是num2和num是完全独立的.赋值给num2的num是num的一个副本 //引用类型 var p1=new Object(); var p2=p1; p1.name='joe'; console.log(p2.name); //joe 首先 p1保存了一个对象的实例。然后这个值被复制到p2。 所以p1,p2都指向同一个对象。当给p1加name属性时,p2也会有相应的属性了 3.参数传递
//在向参数传递 基本类型时,被传递的值会被复制到一个局部变量。js中就是 arguments对象中的一个元素。 //在向参数传递引用类型时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化,会反应在函数的外部。 //基本类型 function add(num) { num += 10; return num; } var count=10,result=add(count); console.log(count); //10 console.log(result); //20 //引用类型 function addProperty(obj){ obj.name='joe'; } var Person=new Object(); addProperty(Person); console.log(Person.name); //joe
4.变量类型检查:
typeof instanceof
console.log(typeof 'aa') //string function Person() { } var p1 = new Person(); console.log(p1 instanceof Person); //true