js 中 “+” 和“-”

当作一元操作符和二元操作符的作用是不同的

一元操作符

“+” 当作作用是尝试转换成number类型

+1       // 1
	
	+'1'     // 1
	
	+true  // 1
	
	+null   // 0
	
	+'a'     // NaN
	
	+{
	  valueOf: () => 1
	}             // 1      调用valueOf方法
	
	+function(val){ return val;} //NaN

”-“ 转换操作符符号

var x = 3;
	y = -x; // y = -3, x = 3

二元操作符

“+” 类型不同会有不同动作。

1是数值加法,
 2是字符串拼接

== 规则:==
如果两个操作值都是数值,则数组相加
如果有一个操作值为字符串类型,则将另一个操作值转换为字符串,最后连接起来

// Number + Number -> 数字相加
1 + 2 // 3

// Boolean + Number -> 数字相加
true + 1 // 2

// Boolean + Boolean -> 数字相加
false + false // 0

// Number + String -> 字符串连接
5 + "foo" // "5foo"

// String + Boolean -> 字符串连接
"foo" + false // "foofalse"

// String + String -> 字符串连接
"foo" + "bar" // "foobar"

”-“ 只是做减法

5 - 3 // 2
3 - 5 // -2
"foo" - 3 // NaN