gpt4 book ai didi

javascript - 为什么即使输入数字是 Javascript 中的字符串,年龄计算器也能正常工作?

转载 作者:行者123 更新时间:2023-12-01 15:55:24 26 4
gpt4 key购买 nike

prompt 中,用户的响应是一个字符串。即使响应是数字,它也会以字符串形式返回。所以我在控制台做了一些补充:

var numberOfCats = prompt("How many cats?");
var tooManyCats = numberOfCats + 1;

如果我在 prompt 框中键入数字 3 然后检查 tooManyCats,结果是:31 .因为 Javascript 不能使用字符串和数字进行数学运算。所以它在它旁边添加了数字 1

但是对于这个例子,出于某种原因它并没有弄乱代码。这里我在控制台做了一个年龄计算器。

var age = prompt("What is your age?")
var days = age * 365.25; //.25 is for the leap years
alert(age + " years is roughly " + days + " days");

如果我在 prompt 框中键入 20,它会提醒我:20 年大约是 7305 天

我不明白为什么第二个没有任何问题。是因为 Javascript 以自己独特的方式查看字符串和数字,还是背后有某种原因?

最佳答案

之所以有效,是因为与 + 不同,* 在进行乘法之前会根据需要将其操作数转换为数字,因此 * 表达式总是 会产生一个数字值(即使该值为 NaN)(如果两个操作数都是 BigInt,则为 BigInt),而 + 可能会产生一个数字(或 BigInt)或字符串,具体取决于其操作数。 (事实上​​,+唯一经典数学运算符之一,它并不总是产生数字或 BigInt;-/%* 始终如此)。所以 days 是一个数字,因为它是 * 的结果(在 BigInts 以外的东西上)。


关于BigInts:只有一次+, -, /, *, and % 运算符表达式导致 BigInts 是如果两个 操作数都是 BigInts,则没有隐式转换。如果只有一个操作数是 BigInt,则操作会抛出 TypeError。

关于javascript - 为什么即使输入数字是 Javascript 中的字符串,年龄计算器也能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63524039/

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