校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > js语言和框架 > 语法相关-操作符相关
题目

请写出foo的值;var foo = 10 + ‘20’;

解答

答案:1020

解析:js中“+”是数字运算和字符运算都包含的方法,但是字符串不能参加数字“+”,所以规则是把数字先转换为字符串,执行字符串的“+”,即字符串拼接。

题目可以扩展为

  1.  var foo = 10 - '20'
    字符串没有“-”操作,所以js主动把字符转换为数字,结果是10-20 = -10

  2.  var foo = 10 + '20' - 20
    加减运算是相同权重的运算符,从左向右依次计算。本题先是字符串加,再执行数字减 即“10” + “20” = “1020” , 再 1020-20 = 1000
C 9条回复 评论
Yates

1020吧

发表于 2020-10-16 20:48:00
0 0
Yates

1020吧

发表于 2020-10-16 20:47:58
0 0
米夏埃尔_BPM_190

"1020"

发表于 2020-10-16 12:19:24
0 0
余择十二

解析:js中“+”是数字运算和字符运算都包含的方法,但是字符串不能参加数字“+”,所以规则是把数字先转换为字符串,执行字符串的“+”,即字符串拼接。

发表于 2020-10-16 11:50:59
0 0
我就是八岁你打我呀_

1020.

发表于 2020-10-16 11:31:54
0 0
都乖点

拼接,1020

发表于 2020-10-16 10:15:04
0 0
王豪杰

结果是”1020”。和其他语言是一致的。js包含隐藏的强制类型转换,进行运算操作时,会尝试将操作数转换为一致的类型。比如包含+运算符,会尝试调用toString方法转换为字符串,包含-运算符,会尝试转换为数字。
进行相等比较则有些不同,会调用valueOf方法,一般情况下,valOf和toString结果相同…如果重写但是不相同了,相等比较就会令人意外。

发表于 2020-10-16 10:14:59
0 0
素衣白裙清浅微笑

应该是1020吧,字符串是拼接

发表于 2020-10-16 10:08:56
0 0
曹钦恩

结果是1020,数字和字符串中间是加法运算时,直接就是拼接

发表于 2020-10-16 10:04:53
0 0