关闭

JavaScript之类型

标签: javascriptfunction引擎object语言
282人阅读 评论(0) 收藏 举报
分类:

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操作符结合起来进行判断。

}

}                                                 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:508481次
    • 积分:1361
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:0篇
    • 译文:0篇
    • 评论:21条
    最新评论