变量类型:分为值类型与引用类型
一、值类型与引用类型
值类型:存储的是具体的值(undefined、Boolean、String、number)
列如:var a = 100;
var b = a; b = 200;
console.log(a)//打印出:100
因为a存储的是具体的值,b=a其实是用b存储一个100的值,后面又对b进行赋值为200只是更改其只身的值,不会影响a
引用类型:存储的是指向具体值的指针(null、Array、function、Object)
列如:var a = {
n:100
}
var b = a;
b.n=200;console.log(a.n)//打印出:200
这是因为a存储的是指向{n:100}这个变量的指针,将a赋值给b,其实就是a、b指向的是同一个变量。而当b.n进行赋值更改的时候,a.n当然也会改变,因为它两指向的是同一个变量值。
注(null是指向空对象的指针。)
二、typeof能够区分那些变量类型?
首先typeof能够区分值变量类型(undefiined、Boolean、number、String),但是如果是用的构造函数创建的变量则用typeof识别的仍为Object
列如:var a = new Number(1) ; typeof a ==="object"
而对于引用类型typeof 只能区分function 其他 Array、Object、null 使用typeof识别返回的都是Object.
网友评论