博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在JavaScript中"+"什么时候是链接符号,什么时候是加法运算?
阅读量:7027 次
发布时间:2019-06-28

本文共 1002 字,大约阅读时间需要 3 分钟。

二元加法运算符“+”在两个操作数都是数字或都是字符串时,计算结果是显而易见的。加号“+”的转换规则优先考虑字符串连接,如果其中一个操作数是字符串或者转换为字符串的对象,另外一个操作数会转换为字符串,加号讲践行字符串的连接操作。如果两个操作数都不是类字符串(string-like)的,那么都讲进行算数加法运算。

“+”操作符的行为表现为:

  • 如果其中一个操作数是对象,则对象会遵循对象到原始值的转换规则转换为原始类值:日期对象通过toString()方法执行转换,其他对象则通过valueOf()方法执行转换(如果valueOf()方法返回一个原始值的话)。由于多数对象都不具备可用的valueOf()方法,因此它们会通过toString()方法来执行转换。

如果对这段描述不太清楚,很可能是JavaScript中的一些基础概念还比较模糊,建议阅读以下文章:

[??]
[ JavaScript中对象转换为原始值遵循哪些原则?]

  • 都进行了对象到原始值的转换后,如果其中一个操作数是字符串的话,另一个操作数也会转换为字符串,然后进行字符串连接。
  • 否则,两个操作数都将转换为数字(或者NaN),然后进行加法操作。
1         1+2;// => 3:加法2         "1"+"2" //=> b="12" 字符串连接3         "1"+2  //=> c="12" 数字转换为字符串后,进行字符串连接4         1+{}//=> "1[object object]":对象转换为字符串后进行字符串连接5         true+true // =>2 :布尔值转换为数值后做加法6         2+null  // => 2 :null转换为0后做加法7         2+undefined // => NaN :undefined转换为NaN后做加法

 

当加号运算符合字符串和数字一起使用时,需要考虑加法结合性对运算顺序的影响。也就是说,运算结果是依赖于运算符的运算顺序的,比如:

1         1+2+"blind mice" // =>"3blind mice"2         1+(2+"blind mice") // =>"12blind mice"

 

转载于:https://www.cnblogs.com/f6056/p/10852933.html

你可能感兴趣的文章
为什么C语言中int的表示范围是-32768~32767
查看>>
有关位运算的基础知识和应用
查看>>
框架dubbox的简单使用
查看>>
codevs1163访问艺术馆 树形dp
查看>>
java获取登陆用户的IP地址
查看>>
JAVA线程控制
查看>>
Java关键字final、static使用总结
查看>>
转载-Objective-C内存管理详解(含示例代码)
查看>>
uchome中模糊搜索的实现
查看>>
深入理解MVC原理
查看>>
LCD之mipi DSI接口驱动调试流程【转】
查看>>
内核中dump_stack()的实现,并在用户态模拟dump_stack()【转】
查看>>
五子棋AI的思路
查看>>
AtomicInteger和count++的比较
查看>>
面向对象 继承 接口
查看>>
Nancy简单实战之NancyMusicStore(三):完善商品信息与管理
查看>>
Python open()函数
查看>>
mysql的设置
查看>>
詹森不等式的积分形式
查看>>
递归函数
查看>>