如果把通过函数或方法调用,明确的将某种类型转换成另一种类型称为显示转换 ,相反则称为隐式类型转换 。google和维基百科中没有找到“显示类型转换”,“隐式类型转换”的字眼。暂且这么称呼。
一、 运算中存在的隐式类型转换
1, “+”运算符
复制代码 代码如下:
var a = 11, b = '22';
var c = a + b;
复制代码 代码如下:
var a = 11;
alert(typeof a); //-->number
a = a + '';
alert(typeof a); //-->string
“-”可以是一元运算符(取负),也可以是二元(减法运算)的。如
复制代码 代码如下:
var a = 11, b = '5';
var c = a - b;
alert(typeof c); //--> number
复制代码 代码如下:
var a = '11';
a = a - '';
alert(typeof a);// -->number
1,if
复制代码 代码如下:
var obj = {name:'jack'}
if(obj){
//do more
}
2,while
复制代码 代码如下:
var obj = {name:'jack'}
while(obj){
//do more
}
3,for in时的类型转换
定义对象字面量时发生从标识符到字符串的隐式转换。
复制代码 代码如下:
var person = {'name':'jack',"age":20,school:'PKU'};
for(var a in person){
alert(a + ": " + typeof a);
}
数组的索引其实也是字符串类型。这着实令人惊叹,但事实的确如此。如
复制代码 代码如下:
var ary = [1,3,5,7];
for(var a in ary){
alert(a + ": " + typeof a);
}
复制代码 代码如下:
String.prototype.fn = function(){return this};
var a = 'hello';
alert(typeof a.fn()); //-->object
alert(a.fn()); //-->hello
同样的情况发生在数字类型上,如
复制代码 代码如下:
Number.prototype.fn = function(){return this};
var a = 10;
alert(typeof a.fn());//-->object
alert(a.fn()); //-->10
新闻热点
疑难解答
图片精选