ECMAScript基础
1原始值和引用值:
primitive value 是储存在stack中的简单数据段,也就是说他们的值直接储存在变量储存的位置。
reference value 是储存在heap 中的对象,也就是说储存在变量处得是一个(指针 point),指向储存对象的内存地址。
为变量赋值时ecmascript会自动判断是原始类型还是引用类型,要实现这一点,解释程序要该值是不是ecmascript 的原始类型之一,Undefined,Null ,Nubmer,Boolean,String,由于这些原始类型占据的内存空间是固定的,所以可以将他们放在储存较小的内存地址stack 中,这样方便在内存中迅速寻找变量的值。如果值是引用类型则内存空间在heap 中分配。因为引用值的大小会改变所以不能把他们放在stack中,因为地址的大小是固定的所以要把引用类型的地址放在变量值中这样可以提高内存访问速度。
2判断类型typeof
ecmascript提供typeof运算符来判断某一个值是否在某种类型范围之内。可以用typeof判断一个值是否表示为一个原始类型,如果是原始类型还可以判断是那一种原始类型。
var str="this is jssrcipt"; console.log(typeof str);//string console.log(typeof 30);//number
undefined 如果变量是Undefined类型
boolean 如果变量是Boolean类型
number 如果变量是Number
string 如果变量是string 类型
object 如果变量是引用类型。
Undefine 类型 :
Undefine 类型只有一个值 那就是undefine 值,当声明变量未初始化的时候它的默认值就是undefine
var und;
console.log(und); //undefine
console.log(und==undefine);//true
注意: 值undefine 与undefine 是不一样的,但是typeof 不会真正的考虑两者的不同例如
var tmp
console.log(typeof tmp); // undefined
console.log(typeof tmp1);//undefined
如果没有console.log(typeof tmp1)
而是直接console.log(tmp1==undefined)结果是error
应为tmp1 并没有赋值为undefined
当函数没有明确返回值的时候也为undefined
function testFun(){ } console.log(testFun()==undefined); //true
Null类型:
另外只有一个值的类型就是Null,它只有一个字面量null 值undefine实际是由null 派生而来 null==undefined 是true,
尽管两个值相等,但是他们的含义完全不同。undefine 是声明了变量但是没有初始化,null 则表示尚未存在的对象。
如果函数方法返回的是对象,那么找不到该对象就是null。
Boolean 类型:
emcascript 中最常用的类型之一,他只有两个值 true,false,