var x = "5";
var y = 2;
var z = 5-("1"+2)+"2"+"1";
console.log(z) // -721
这怎么可能?请在javascript中解释 - 运算符
答案 0 :(得分:1)
("1"+2)
通过连接为您提供"12"
。
5-"12"
为您提供-7
,因为正如Jonathan指出的那样,-
需要数字并根据需要进行投射。
然后你连接-7+"2"+"1"
给你字符串"-721"
这实际上只是一个操作顺序问题,在7-“12”的算术之后发生连接,除了在括号中首先使“12”成为问题。
一切都按预期工作。
答案 1 :(得分:0)
让我们打开var var z = 5-("1"+2)+"2"+"1";
("1" + 2)
在括号中,所以它将具有优先权。 ("1" + 2) = 12
现在你有5-12+"2"+"1";
。我们将其分为两部分
5 - 12 AND "2" + "1"
a. 5 - 12 = -7
b. "2" + "1" = "21"
现在你有-7 + "21"
。由于一个是String,因此它是一个串联,导致"-721"
答案 2 :(得分:0)