答案:1020
解析:js中“+”是数字运算和字符运算都包含的方法,但是字符串不能参加数字“+”,所以规则是把数字先转换为字符串,执行字符串的“+”,即字符串拼接。
题目可以扩展为
- var foo = 10 - '20'
字符串没有“-”操作,所以js主动把字符转换为数字,结果是10-20 = -10
- var foo = 10 + '20' - 20
加减运算是相同权重的运算符,从左向右依次计算。本题先是字符串加,再执行数字减 即“10” + “20” = “1020” , 再 1020-20 = 1000
比之前听的课更好懂
1020吧
1020吧
"1020"
解析:js中“+”是数字运算和字符运算都包含的方法,但是字符串不能参加数字“+”,所以规则是把数字先转换为字符串,执行字符串的“+”,即字符串拼接。
1020.
拼接,1020
结果是”1020”。和其他语言是一致的。js包含隐藏的强制类型转换,进行运算操作时,会尝试将操作数转换为一致的类型。比如包含+运算符,会尝试调用toString方法转换为字符串,包含-运算符,会尝试转换为数字。
进行相等比较则有些不同,会调用valueOf方法,一般情况下,valOf和toString结果相同…如果重写但是不相同了,相等比较就会令人意外。
应该是1020吧,字符串是拼接
结果是1020,数字和字符串中间是加法运算时,直接就是拼接