时间:2021-05-18
简介
JavaScript是一门了不起的语言。我喜欢它的灵活性:只需以你喜欢的方式做事:更改变量类型,动态的向对象添加方法或属性,对不同的变量类型使用运算符等等。
然而动态是要付出代价的,开发人员需要知道怎样处理对于不同操作符的类型转换:加号(+),等号(==和===),不等号(!=和!==)等等,许多运算符有自己处理类型转换的方式。
加法运算符
最常用的运算符:+,这个运算符用于接连字符串或对数字求和:
字符串连接:
var result = "Hello, " + "World!";// 字符串 + 字符串 = 字符串 (连接)// "Hello, World!"
数字算术相加:
JavaScript允许使用对象,数组,null或undefined作为操作数。下面试着揭开转换的一般规则。
转换规则
使用下面的等式看一下在操作运算符里JavaScript是如何进行类型转换的:
如果两个操作数都是原始类型,运算符会检查是否至少有一个是字符串类型,如果是就执行连接操作。其他情况就都转换为数字并求合。
对象类型转为原始类型
对象类型向原始类型的转换
当数组转换为原始类型,JavaScript会使用它的join(',')方法,例如[1,5,6]就是"1,5,6"。普通JavaScript对像{}的原始类型是"[object Object]"。
学习例子
下面的例子帮助我们理解简单和复杂的转换场景。
例1:数字和字符串
解析:
第二个操作数是字符串,第一个操作数从数字转换为字符串,然后进行连接。
例2:数字和数组
解析:
第1个操作数是数组,所以它被转换为原始字符串值,在下一步数字操作数转换为字符串,然后再完成两个字符串的连接。
例3:数字和布尔类型
解析:
因为两个操作数都不是字符串,布尔值转换成数字,然后执行算术的求和。
例4:数字和对象
解析:
第二个对象操作数转为字符串值,因为valueOf()方法返回对象本身,它不是原始值,toString() 方法就会被调用并返回字符串,第二个操作数现在是字符串了,因此数字也被转换为字符串,最后执行两个字符串的连接。
Example 5: 数字和null
解析:
因为操作数不是对象也不是字符串,null被转换成数字,然后计算数字的和。
Example 6: 字符串和null
解析:
因为第一个操作数是字符串,null转成字符串,然后进行字符串连接。
Example 7:数字和undefined
解析:
因为操作数都不是对象或字符串,undefined转为数字:NaN,对数字和NaN进行相加求值等于NaN.
可以在JsBin中看这些例子
总结
为了避免潜在的问题,不要对对象进行使用加法运算符,除非你清楚的定义了toString()或valueOf()方法。正如例子中所看到了,加法操作符有很多特定的情况。了解确切的转换场景能帮你避免未来的意外,祝coding愉快!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
加法运算符:+和-语法expression+expressionexpression–expression备注相加运算符为:加(+)减(–)这些二进制运算符具有
2.9.5、加性运算符 加性运算符(即加号和减号)通常是最简单的运算符,不过在ECMAScript中,每个加性运算符都有大量的特殊行为。 1、加法运算符:复
javascript基础教程算术运算符运算符运算符说明示例示例说明+加法x+y如果x为整数2,y为整数5,x+y等于7如果x为字符串"text1",y为字符串"
JavaScript运算符主要包括:算术运算符赋值运算符比较运算符三元运算符逻辑运算符字符串连接运算符算术运算符运算符说明例子运算结果+加y=2+1y=3-减y
JavaScript中的运算符有很多,主要分为算术运算符,等同全同运算符,比较运算符,字符串运算符,逻辑运算符,赋值运算符等。这些运算符都有一些属于自己的运算规