js是一种弱类型语言,数据类型主要分两种,原始值:存放在栈中的简单数据段,也就是说,他们直接存储在变量访问的位置;引用值:存放在堆中的对象,就是说,存储在变量处的值是一个指针,指向存储对象的内存处,为对象赋值时,js的解释程序会判断该值的原始类型的,还是引用类型的,元素类型 Undefined ,Null ,Bollean ,String ,由于这些原始类型占据的空间是固定的,所以可以将它们存储在教学的内存区域 栈中,如果一个值是引用类型,那么它的存储空间将分配在堆中,由于引用值的大小会变,所以不能存放在栈中,否则会降低变量的查询速度,相反,放在变量的栈空间中的值是该对象存储在堆中的地址,地址大小是固定的,所以他存放在栈中不会影响。
原始类型 :有Undefined Null Boolean Number String 这五种, 可以用一个运算符typeof来判断一个值的类型,
var stemp = "test string"; alert(typeof stemp);// outputs "string" alert(typeof 95);//outputs "number; //引用类型或null 将返回 object null 将被看作对象占位符,
Undefined类型:
此类型只是一个值,当声明的变量未初始化时,该变量的默认值是Undefined;
var otemp;
alert (otemp == undefined);//outputs true;
注意 值undefined并不同于为定义的值,但是typeof运算符并不真正区分这两种值,
var oTemp; alert (typeof oTemp);//outputs 'undefined' alert (typeof otemp2);//outputs 'undefined' 确定otemp2没有定义 //warning otemp2 只能用于typeof 其他将报错, alert(otemp1 == undefined); //causes error function test(){ } alert(test()== undefined);//outputs 'true'当函数没有返回值时,也返回此值,
Null类型:
null是一个专有值,即字面量,值undefined实际上是从null派生来的,因此
alert(null == undefinde);//outputs 'true';
尽管两个值相等,但他们的含义不同,undefined是声明了变量但未对其初始化赋值,null则用于表示尚未存在对象,如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null;
String类型;
独特之处是他没有固定的大小,字符串从0开始