gpt4 book ai didi

javascript - JavaScript 中的++ 运算符

转载 作者:搜寻专家 更新时间:2023-11-01 00:10:23 24 4
gpt4 key购买 nike

当我有一个加号时,我得到了错误的答案,例如

var b = [069];
var total = 0;

total = total + b
console.log(total) // total = 069

但是,当我加上第二个加号时,等式看起来像这样

total = total + + b  // total = 69

我得到了 69 的正确答案。以上只是我的问题的一个简化示例。

这工作正常,但是在使用 JSHint 时我收到一条警告说

confusing pluses

如何在不使用++ 的情况下获得正确答案?另外,这个运算符叫什么?

最佳答案

不幸的是,Javascript 做了很多隐式转换......用你的代码

b + [69]

[69](包含数字 69 的数组)被转换为字符串,成为 "69"。然后将其连接到 b,在这种情况下它也被转换为字符串 "0"。因此结果 "069"

但是,如果您在数组前面添加另一个一元 +,则字符串会转换回数字,并且您会得到一个添加到 b 的数字结果。

0 + [69] → 0 + "69" → "0" + "69" → "069"
0 + + [69] → 0 + + "69" → 0 + 69 → 69

确切的规则非常复杂,但只要考虑二进制 + 的简化形式,您就可以使用 Javascript 提高工作效率:

  • 如果都是数字则结果为数字加法
  • 否则它们都被转换为字符串并且结果是连接

有点奇怪的是,数组到字符串的隐式转换只是元素到字符串的转换,在它们之间添加","作为分隔符。

这意味着单元素数组 [1] 被转换为 "1"... 并且暗示了明显疯狂的结果,例如 [1] = = 1

关于javascript - JavaScript 中的++ 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com