var userinput = prompt("Hello. Please enter a statement and I will repeat the last word");
if(typeof userinput !== "string"){
console.log("This is not a string.");
}
我是一个完整的新手,我只是想创建一个简单的脚本,重复你输入的语句的最后一个字。我添加了这个安全措施,这样如果你没有输入一个字符串,它会显示一条消息,但每当我用一个数字测试代码时,它只是忽略了这个部分并仍然执行else语句,这是找到最后一个的代码。字。我不明白为什么这种保障不起作用。
非常感谢一些帮助。感谢
答案 0 :(得分:3)
因为prompt()
无条件地返回一个字符串(或null)。它并不试图解析所输入的内容并且去了噢,嘿,它是所有数字。我只会返回一个int
而不是#34;。这意味着你的测试基本上没有意义......你永远不会得到任何其他东西而不是字符串,所以你的代码将总是采取其他的'其他'路径。
相关文档:https://developer.mozilla.org/en-US/docs/Web/API/window.prompt
答案 1 :(得分:0)
"123"
仍然是一个字符串。
prompt
返回一个字符串或null。输入哪些字符并不重要。
答案 2 :(得分:0)
提示返回一个字符串。该字符串可能是"2"
但它仍然是一个字符串。
你可以用这样的正则表达式进行测试:
var reg = /^\d+$/;
if(reg.test(userinput)){
console.log("This is a number.");
}
查看它是否为数字
答案 3 :(得分:0)
从用户输入收到的所有内容最初都是一个字符串。你想要做的是测试输入是否可以转换为某种数字。
答案 4 :(得分:0)
你有什么期望呢?
prompt()
始终返回一个字符串,因此userinput
始终是一个字符串,无论用户输入什么。如果他们没有输入任何内容,它将是一个空白字符串,但仍然是一个字符串。如果他们输入一个数字,它将是一个恰好包含数字字符的字符串。
因此,typeof
检查将始终失败。
如果您想检查他们是否输入任何内容,您可以检查它是否有非空白值:
if(!userinput) {
//user didn't enter anything.
}
答案 5 :(得分:0)
使用 prompt()将始终返回一个字符串。所以,你需要的是测试它是否也是一个数字。
if(typeof userinput === "number") {
console.log("This is also a number.");
} else {
// only string
}
或者,您也可以使用isNan()
检查“非数字”。
答案 6 :(得分:0)
有五个人和计数已经解释说"1"
是一个字符串......(就像""
一样,一个空字符串),prompt()
返回字符串......
... 但是,来实现听起来像你正在尝试做的事情 - 如果字符串是一个可以理解为的字符串,则给出不同的结果代表一个数字 - 你可以试试这个:
if( parseFloat(userinput) !== NaN ){
parseFloat()
尝试将字符串转换为可能有小数位的数字('浮动')。如果不能,则返回NaN
(非数字),一个评估为false
的特殊实体类型(但0或-1也是数字,所以我们测试{{1而不是仅使用!== NaN
来测试它是否为评估为if( parseFloat(userinput)){
的东西。
正如那些文档解释的那样,它是非常宽容的,例如它会将true
解释为"5 words in this string"
。
或5.0
如果你只关心整数。或者,如果您想严格控制字符串中允许的输入类型,请阅读regular expressions。