最特殊的加法运算符, 有两个做用,字符串链接和加法做用。数组
1.若是运算子是对象,先自动转成原始类型的值(即先执行该对象的valueOf方法,若是结果还不是原始类型的值,再执行toString方法;若是对象是Date实例,则先执行toString方法)。 2.两个运算子都是原始类型的值之后,只要有一个运算子是字符串,则两个运算子都转为字符串,执行字符串链接运算。 3.不然,两个运算子都转为数值,执行加法运算。函数
1+1 //2 true + true //2 1+true //2 1+{a:2} //"1[object Object]" '1'+true // "1true" 1+[1]; //"11" [1, 2] + [3] // "1,23"
加法运算符必定有左右两个运算子,若是只有右边一个运算子,就是另外一个运算符啦,叫“数值运算符”code
+ -1 // -1 +"2" // 2
只有左边一个运算子,则报错。对象
加法运算符之外的其余算术运算符(好比减法、除法和乘法),它们的规则是:全部运算子一概转为数值,再进行相应的数学运算。字符串
余数运算符: 运算结果的正负号由第一个运算子的正负号决定数学
-1 % 2 // -1 1 % -2 // 1
自增、自减运算符变量
自增和自减运算符,是一元运算符,只须要一个运算子。它们的做用是将运算子首先转为数值,而后加上1或者减去1。它们会修改原始变量。object
数值运算符 数值运算符的做用在于能够将任何值转为数值,至关于Number函数 。方法
比较运算符: -若是两个运算子都是字符串,则按照字典顺序比较(其实是比较Unicode码点)。 -不然,将两个运算子都转成数值,再进行比较(等同于先调用Number函数) -两个复合类型(对象、数组、函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。数据