美文网首页
js隐式转换

js隐式转换

作者: Venvivo | 来源:发表于2016-06-15 09:26 被阅读0次

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

1, “+”运算符

var a = 11, b ='22';

var c = a + b;

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

var a = 11;

alert(typeof a);//-->number

a = a +'';

alert(typeof a);//-->string

2,“-”运算符

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

var a = 11, b ='5';

var c = a - b;

alert(typeof c);//--> number

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

var a ='11';

a = a -'';

alert(typeof a);// -->number

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

1,if

var obj = {name:'jack'}

if(obj){

     //do something

}

这里会把obj隐式的转换成Boolean类型(可以参考上一篇 js if语句只写一个参数是什么意思)

2,while

var obj = {name:'jack'}

while(obj){

//do more

}

同if

3,for in时的类型转换

定义对象字面量时发生从标识符到字符串的隐式转换。

var person = {'name':'jack',"age":20,school:'PKU'};

for(var a in person){

alert(a +": "+typeof a);

}

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

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

var ary = [1,3,5,7];

for(var a in ary){

alert(a +": "+typeof a);

}

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

String.prototype.fn =function(){returnthis};

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”显示。

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

Number.prototype.fn =function(){return this};

var a = 10;

alert(typeof a.fn());//-->object

alert(a.fn());//-->10

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

相关文章

  • js中的类型转换

    在js中数据转换分为3种:隐式类型转换,强制类型转换,函数转换 1.隐式类型转换 (1):运算符转换 js中的值在...

  • 类型转换

    js的类型转换分成显示和隐式,显式转换常用类型转换函数进行转换,隐式最多用在条件判断,通常是把字符转为布尔型。类型...

  • 隐式转换的规则

    问题:隐式转换的规则是什么 说起JS的隐式转换规则,我们可以说下JS的基础数据类型 JS的七中类型 我们所熟知的J...

  • JS的基本小结

    JS基本输出方式 JS数据类型 变量 常量 变量常量小练习 声明提前 隐式转换 显示转换/强制转换

  • JS隐式转换

    基础类型 大部分类型错误都被类型转换隐藏了 但少数会出现错误 2.运算符中的"+"运算是从左到右 当字符串与数字相...

  • JS 隐式转换

    隐式转换 数据类型基本数据类型: undefined string boolean null number sym...

  • js隐式转换

    一、 运算中存在的隐式类型转换 1, “+”运算符 var a = 11, b ='22';var c = a +...

  • js隐式转换

    当我们使用if进行判断时,()内的值会被会被转换为boolean类型 undefined:false null:f...

  • JS 隐式转换

    今天在复习隐式转换的时候发现了一些盲点,首先简要回顾一下隐式转换规则。 + 加号,既可以是算术运算符,也可以是字符...

  • js隐式转换

    js隐式转换 boolean == number 当 布尔类型与数字类型进行 ==判断时;是将布尔转为数字,然后在...

网友评论

      本文标题:js隐式转换

      本文链接:https://www.haomeiwen.com/subject/cvoudttx.html