为什么不#Number(window.prompt)将字符串转换为整数

时间:2016-11-01 12:03:21

标签: javascript



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

3 个答案:

答案 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"",且无法转换为数字。