如果我只想在提示窗口中输入整数,那么在JavaScript中使用round()
而不是常规+prompt
是否合适?它是否在JavaScript标准/规则中对prompt
说了类似的内容?
答案 0 :(得分:3)
这就是当你在提示之前添加加号时发生的事情,即如下所示
例如: - 1
var a = prompt("Please enter a number");
console.log(a);
typeof(a);
现在在例如(1)当你输入一个数字时如果你在控制台中检查它,它会显示一个数字,但是这个数字介于双引号之间,所以在JavaScript中它是一个字符串,当你控制它时,它也将在typeof中显示。
例如: - 2
var a = +prompt("Please enter a number");
console.log(a);
typeof(a);
现在,当你控制var a和typeof
a 例如(2)时,结果会有所不同,因为我们在提示之前添加了+。所以这次我们将提示输入值作为数字而不是字符串。试试你会明白我在说什么。
答案 1 :(得分:2)
没有
unary plus operator会将响应转换为数字,而不是整数。
它可以为您提供浮点值,它可以为您提供NaN
。
如果你想要一个整数,那么你需要check the response,然后在没有你想要的情况下进行一些错误恢复。
例如:如果它是浮点值,那么您可能只想使用Math.floor
进行转换。如果是NaN
,那么您可能希望再次prompt
该用户。
答案 2 :(得分:0)
+promt("...")
的效果是promt命令的结果将转换为数字。
这是一个很好的黑客,但不是一个干净的解决方案。
我建议将用户输入分配给变量,然后检查它,如果它与要求不匹配,则抛出异常或错误消息。
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.");
答案 3 :(得分:0)
因此,在任何数据类型前放置+
会将其转换为数字。
我尝试过:
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
答案 4 :(得分:-1)
+prompt()
只是+
之前的prompt()
,就像写+"3"
或+"10"
一样。它只是试图将结果转换为数字。