`
talentluke
  • 浏览: 592226 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JavaScript中的隐式类型转换

 
阅读更多

如果把通过函数或方法调用,明确的将某种类型转换成另一种类型称为显示转换 ,相反则称为隐式类型转换 。google和维基百科中没有找到“显示类型转换”,“隐式类型转换”的字眼。暂且这么称呼。

 

一、 运算中存在的隐式类型转换 

1, “+”运算符

1
2
var a = 11, b = '22';
var c = a + b;

这里引擎将会先把a变成字符串"11"再与b进行连接,变成了"1122"。有人会有疑问,为什么不把b变成数字22再进行算术加运算呢,这样的话c就是33了。没有为什么,当运算符“+”两边一个是数字类型,一个是字符串类型时,js引擎规定进行字符串连接运算而非算术加运算。利用运算符“+”这个特性,可以很方便的将Number转换成String。如

1
2
3
4
var a = 11;
alert(typeof a); //-->number
a = a + '';
alert(typeof a); //-->string

2,“-”运算符

“-”可以是一元运算符(取负),也可以是二元(减法运算)的。如

1
2
3
var a = 11, b = '5';
var c = a - b;
alert(typeof c); //--> number

这里与上面的“+”相反,会把字符串b隐式的转换成数字5再进行算术减法运算。利用这个特性,可以很方便的将String转换成Number

1
2
3
var a = '11';
a = a - '';
alert(typeof a);// -->number

 

二、 语句中存在的隐式类型转换

1,if

1
2
3
4
var obj = {name:'jack'}
if(obj){
    //do more
}

这里会把obj隐式的转换成Boolean类型

2,while

1
2
3
4
var obj = {name:'jack'}
while(obj){
    //do more
}

同if

3,for in时的类型转换
定义对象字面量时发生从标识符到字符串的隐式转换。

1
2
3
4
var person = {'name':'jack',"age":20,school:'PKU'};
for(var a in person){
    alert(a + ": " + typeof a);
}

这里name,age分别加单/双引号以强调其为String类型,school没有加单/双引号。我们遍历下该对象的属性,查看其类型。发现school也被隐式的转换成了String类型。

数组的索引其实也是字符串类型。这着实令人惊叹,但事实的确如此。如

1
2
3
4
var ary = [1,3,5,7];
for(var a in ary){
    alert(a + ": " + typeof a);
}

 

三、 alert时存在的隐式类型转换

1
2
3
4
String.prototype.fn = function(){return this};
var a = 'hello';
alert(typeof a.fn()); //-->object
alert(a.fn()); //-->hello

给String原型上添加了个fn方法,该方法返回this,我们知道this可以理解成当前类的实例对象,既然是对象那么typeof a.fn()自然返回是object了。
关键是最后的alert(a.fn()),a.fn()返回的明明是对象,但却隐式的转换成了字符串“hello”显示。

同样的情况发生在数字类型上,如

1
2
3
4
Number.prototype.fn = function(){return this};
var a = 10;
alert(typeof a.fn());//-->object
alert(a.fn()); //-->10

a.fn()返回的是对象类型,但在alert(a.fn())时会隐式的将其转换成数字。

分享到:
评论

相关推荐

    JavaScript隐式类型转换_.docx

    JavaScript隐式类型转换_.docx

    JavaScript强制类型转换和隐式类型转换操作示例

    在JavaScript中声明变量不需指定类型, 对变量赋值也没有类型检查,同时JavaScript允许隐式类型转换。这些特征说明JavaScript属于弱类型的语言。 (1).转换为字符串 转换为字符串是应用程序中的常见操作,javascript...

    简单介绍JavaScript数据类型之隐式类型转换

    不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。 typeof '11' //string typeof(11) //number '11' < 4 //false 本章节单独...

    总结Javascript中的隐式类型转换

    谈谈JavaScript的隐式类型转换,我们知道在JavaScript中声明变量不需指定类型, 对变量赋值也没有类型检查,同时JavaScript允许隐式类型转换。这些特征说明JavaScript属于弱类型的语言。

    有趣的JavaScript隐式类型转换操作实例分析

    本文实例讲述了JavaScript隐式类型转换操作。分享给大家供大家参考,具体如下: JavaScript的数据类型是非常弱的(不然不会叫它做弱类型语言了)!在使用算术运算符时,运算符两边的数据类型可以是任意的,比如,一...

    浅析JavaScript中的隐式类型转换

    google和维基百科中没有找到“显示类型转换”,“隐式类型转换”的字眼。暂且这么称呼。 一、 运算中存在的隐式类型转换 1, “+”运算符 代码如下:var a = 11, b = ’22’; var c = a + b; 这里引擎将会先把a变成...

    JavaScript隐式类型转换

    之所以不同的数据类型之间可以做运算,是因为JavaScript引擎在运算之前会悄悄的把他们进行了隐式类型转换的,如下是数值类型和布尔类型的相加: 复制代码 代码如下: 3 + true; // 4 结果是一个数值型!如果是在C...

    JavaScript中运算符规则和隐式类型转换示例详解

    在 JavaScript 中,当我们进行比较操作或者加减乘除四则运算操作时,常常会触发 JavaScript 的隐式类型转换机制;而这部分也往往是令人迷惑的地方。譬如浏览器中的 console.log 操作常常会将任何值都转化为字符串...

    JavaScript中的一些隐式转换和总结(推荐)

    主要介绍了JavaScript中的一些隐式转换和总结,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    JavaScript隐式类型转换代码实例

    主要介绍了JavaScript隐式类型转换代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    C语言中自动隐式转换与类型强制转换实例分析

    本文通过一个C程序实例对C语言中自动隐式转换与类型强制转换的注意点进行深入分析,详情如下: 先看一个C程序: #include #include #include double proc(int q){ int n; double sum,t;//本例的关键就在这几个变量...

    跟我学习javascript的隐式强制转换

    不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。 typeof '11' //string typeof(11) //number '11' < 4 //false 一、基本...

    对存在JavaScript隐式类型转换的四种情况的总结(必看篇)

    下面小编就为大家带来一篇对存在JavaScript隐式类型转换的四种情况的总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Global site tag (gtag.js) - Google Analytics