本文转自life的leanote博客: http://leanote.com/blog/view/5357c38e1a91087246000001javascript
+单目 转成数字html
+双目 转成字符串(除非是数字+数字=数字)java
当运算符“+”两边一个是数字类型,一个是字符串类型时,js引擎规定进行字符串链接运算而非算术加运算数组
1 + "a" == "1a"
可是:spa
# 单独一个+, 使数组转成数字, 也能够使字符串转成数字 +[] == 0 +[1] == 1 +[1, 2] => NAN +"1" == 1 # 双目+运算, 都转成字符串操做!!! 1+[] == "1" 1+[2,3] == "12,3" # 一步步转 1+1+"a" == "2a"
全部对象转成boolean都是true!!! 包括[]和{}code
对象转字符串orm
先调用toString(), 若是返回字符串或原始值则转成字符串htm
else 调用valueOf()转成字符串
对象
对象转数字blog
先调用valueOf(), 若是返回原始值, 则转成数字
else 调用valueOf()
+[] == 0 +{} => NAN // 由于object调用toString()方法获得"[object Object]"
要记住: +双目 转成字符串(除非是数字+数字=数字)
[]+{} == "[object Object]" ""+{} == "[object Object]" {}+"" == 0 // 至关于+"", 会忽略{} {}+0 == 0 // 至关于+0 0+{} == "0[object Object]" // 转成字符串!! {}+{} == +{} => NAN
JavaScript 把第一个 {}
解释成了一个空的代码块(code block)并忽略了它
http://justjavac.com/javascript/2012/12/20/object-plus-object.html
http://justjavac.com/javascript/2012/05/24/can-you-explain-why-10.html
http://stackoverflow.com/questions/7202157/why-is-10 Why is ++[[]][+[]]+[+[]] = “10”?