var numberOne= Number(window.prompt("Type a number", ""));
//in prompt I entered "99" and I get output NaN
console.log(numberOne);
var numberTwo = "99";
console.log(Number(numberTwo));

当我使用提示符
时,为什么我会获得 NaN答案 0 :(得分:0)
发生这种情况的原因是因为window.prompt已经返回一个字符串。因此,当您输入" 99"时,您实际上是在尝试将'"99"'
投射到一个无法完成的数字。
来自https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt
请注意,结果是一个字符串。这意味着您有时应该投射用户给出的值。例如,如果他的答案应该是数字,则应将该值转换为数字。
答案 1 :(得分:0)
Number()函数将object参数转换为数字 表示对象的值。
返回:一个数字。将不同的对象值返回到它们的数字。 如果该值无法转换为合法数字,则返回NaN。 如果未提供参数,则返回0.
我假设你正在输入 99 (没有引号)。如果您使用引号输入,则需要解析和/或验证输入。
var numberOne = Number(window.prompt("Try 99 (with number conversion)", ""));
if (numberOne === 99) console.log('The string 99 has converted successfully!');
numberOne = window.prompt("Try 1 (No Number-convesion)", "");
if (numberOne === 1) console.log('The string 1 has converted successfully!');
else console.log('The string 1 did not convert to a number (int)');

在第二个例子中," 1"不会转换为数字类型(int)。这很明显,因为比较是类型敏感的(===
而不是==
)。
简而言之:您的代码按预期工作。
答案 2 :(得分:-1)
window.prompt()为您返回一个字符串
来自代码
var numberOne= Number(window.prompt("Type a number", ""));
如果您输入99
,变量numberOne
将是"99"
,您想要的。并且此值可以使用99
Number()
但如果您输入"99"
,则变量numberOne
将为""99""
,且无法转换为数字。