JavaScript之类型

来源:互联网 发布:淘宝我的店铺在哪里找 编辑:程序博客网 时间:2024/06/05 14:21

1.类型转换

在JS代码中通常可以发现这样的代码:

if(datamodel.item){

//  do something....

}else {

datamodel.item = new Item();

}


这种写法事实上具有更深层次的含义:

应该注意到,datamodel.item是一个对象(字符串,数字等),而if需要一个boolean型的表达式,所以这里进行了类型转换。在JAVASCRIPT中,如果上下文需要booleanx型的值,则引擎会自动将对象转换为boolean类型,转换规则为,如果该对象非空,则转换为TRUE,否则为FALSE.因此我们可以采用这种简写的形式。


2.类型判断

JavaScript是一个弱类型的语言,但是有时我们需要知道变量在运行时的类型,比如,一个函数的参数语气为另一个函数:

function handleMessage(message,handle){

return handle(message);

}

当调用handleMessage的函数传递的handle不是一个函数则  JavaScript引擎会报错,因此我们有必要在调用之前进行判断:

      function handleMessage(message,handle){

       if(typeof handle=="function"){

        return handle(message);

}  else{

  throw new Error("the2nd argumeng should be a function");


但是,typeof并不总是有效的,比如下面这种情况:

var obj ={};

var array=["one","two","three","four"];

print(typeof obj);   //object

print(typeof array);   //object

运行结果显示,对象obj和数组array的typeof值均为"object" ,这样我们就无法准确判断了,这时候,可以通过调用

instanceof来进行进一步的判断:

print(obj instanceof  Array);    //false

print(array instanceof Array);  //true

第一行代码返回false,第二行则返回true,因此,我们可以将trpeof操作符和instanceof操作符结合起来进行判断。

}

}