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