【问题标题】:+prompt vs prompt in JavaScript+提示与 JavaScript 中的提示
【发布时间】:2016-06-24 10:30:16
【问题描述】:

如果我只想在提示窗口中输入整数,那么在 JavaScript 中使用 +prompt 而不是常规的 prompt 是否很好?它是否在 JavaScript 标准/规则中对 +prompt 说了类似的话?

【问题讨论】:

标签: javascript


【解决方案1】:

没有。

unary plus operator 会将响应转换为数字,而不是整数。

它可以给你一个浮点值,它可以给你NaN

如果你想要一个整数,那么你需要check the response,然后在响应不是你想要的情况下进行一些错误恢复。

例如:如果它是一个浮点值,那么您可能只想使用Math.floor 来转换它。如果是NaN,那么您可能想再次prompt 用户。

【讨论】:

    【解决方案2】:

    这就是在提示之前添加加号时发生的情况,即如下所示,

    例如:- 1

    var a = prompt("Please enter a number");
    console.log(a);
    typeof(a);
    

    现在在 eg (1) 中,当您输入一个数字并在控制台中检查时,它会显示一个数字,但由于该数字位于双引号之间,因此在 JavaScript 中它是字符串,当你控制它时,它也会在 typeof 中显示。

    例如:- 2

    var a = +prompt("Please enter a number");
    console.log(a);
    typeof(a);
    

    现在,当您控制 eg(2) 的 var a 和 typeof a 时,结果会有所不同,因为我们在提示符前添加了 +。所以这次我们将提示输入值作为数字而不是字符串。试试你就会明白我在说什么。

    【讨论】:

    • 太好了!!欢迎:-)
    【解决方案3】:

    +promt("...")的作用是将promt命令的结果强制转换为数字。

    这是一个不错的 hack,但不是一个干净的解决方案。

    我建议将用户输入分配给一个变量,然后检查它,如果它不符合要求,则抛出异常或错误消息。

    var
        input = prompt("Please enter a positive number"),
        inputNum = parseInt(input, 10);
    
    if (isNaN(inputNum) || inputNum < 1)
        alert("You did not enter a positive number.");
    

    【讨论】:

    • "到正数" — 不正确。它不强制为正数。 +"-22.134" 评估为 -22.134
    • @Quentin 是对的,它只是将变量强制转换为数字,但不强制执行任何符号(不要误以为 + 运算符与正数有任何关系)。您应该更正这一点,因为您的 SO 分数使您的帖子具有较高的可信度,并且更容易导致错误信息传播。
    • 谢谢,伙计们。修好了。
    【解决方案4】:

    因此,在任何数据类型将其转换为数字之前放置一个+。 我试过这个:

    typeof(+"100") ==> number
    typeof(+"12.34") ==> number
    typeof(+true) ==> number
    typeof(+false) ==> number
    

    当我尝试使用 undefined 数据类型时,事情变得非常奇怪。例如:

    x = +undefined
    typeof(x) ==> Number whilst value of variable x is NaN
    

    【讨论】:

    • 这是有道理的。 parseFloat(undefined) 是 NaN,就像 parseFloat('afije') 但 NaN 是数字类型。
    【解决方案5】:

    +prompt() 只是在prompt() 之前的+,就像写+"3"+"10"。它只是试图将结果转换为一个数字。

    【讨论】:

    • 它将提示返回的字符串更改为数字。
    • @Quentin 是的,我立刻注意到了
    • 你还没有回答这个问题。
    猜你喜欢
    • 2012-04-13
    • 2023-04-05
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多