为什么这个基本的 if 语句不起作用?JavaScript
Why does this basic if-statement fail to work? JavaScript
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 语句,这是找到最后一个单词的代码。我不明白为什么这种保护措施不起作用。
真的很感激一些帮助。谢谢
因为prompt()
无条件(或空(返回字符串。它不会尝试解析输入的内容并"哦,嘿,都是数字。我只会返回一个int
"。这意味着你的测试基本上是没有意义的......除了字符串之外,你永远不会得到任何东西,所以你的代码将始终采用"else"路径。
相关文档:https://developer.mozilla.org/en-US/docs/Web/API/window.prompt
>"123"
仍然是一个字符串。
prompt
返回字符串或 null。输入什么字符并不重要。
提示返回一个字符串。 该字符串可能"2"
,但它仍然是一个字符串。
您可以使用如下所示的正则表达式进行测试:
var reg = /^'d+$/;
if(reg.test(userinput)){
console.log("This is a number.");
}
查看是否为数字
从用户输入接收的所有内容最初都是字符串。您要做的是测试输入是否可以转换为某种数字。
你期望它做什么?
prompt()
始终返回一个字符串,因此无论用户输入什么userinput
都将始终是一个字符串。如果他们不输入任何内容,它将是一个空白字符串,但仍然是一个字符串。如果他们输入一个数字,它将是一个恰好包含数字字符的字符串。
因此,您的typeof
检查将始终失败。
如果你想检查他们是否输入了任何东西,你可以检查它是否有一个非空值:
if(!userinput) {
//user didn't enter anything.
}
使用 prompt(( 将始终返回一个字符串。所以,你需要的是测试它是否也是一个数字。
if(typeof userinput === "number") {
console.log("This is also a number.");
} else {
// only string
}
或者,您也可以使用isNan()
来检查"不是数字"。
五个人和计数已经解释说"1"
是一个字符串......(如""
,一个空字符串(,prompt()
返回字符串...
。但是,为了实现听起来像您正在尝试做的事情 - 如果字符串是可以理解为表示数字的字符串,则给出不同的结果 - 您可以尝试以下操作:
if( parseFloat(userinput) !== NaN ){
parseFloat()
尝试将字符串转换为可能具有小数位的数字("浮点数"(。如果不能,则返回NaN
(不是数字(,这是一种计算结果为 false
的特殊实体类型(但 0 或 -1 也是如此,它们是数字,因此我们测试!== NaN
,而不仅仅是使用 if( parseFloat(userinput)){
来测试它是否计算为 true
(。
正如这些文档所解释的那样,它非常宽容,例如,它会"5 words in this string"
解释为5.0
。
或者parseInt()
如果你只关心整数。或者,如果您想严格控制字符串中允许的输入类型,请阅读正则表达式。
- 循环通过数组的If语句不起作用
- Javascript变量到PHP变量-如果语句不起作用,则发布
- 如果语句不起作用,请单击
- 三元语句不起作用
- Javascript if和else语句不起作用
- PHP代码中实现的JavaScript |if语句不起作用
- 如果语句不起作用 - JavaScript
- 简单的JS计算器-为什么不是'这个if语句不起作用
- alert语句不起作用
- 范围的Switch语句不起作用
- js 函数中的 if 语句不起作用
- Javascript AJAX PHP if语句不起作用
- JAVASCRIPT if 语句不起作用
- JavaScript var getElementById if 语句不起作用
- Java 脚本如果语句不起作用
- 为什么我的删除位置语句不起作用
- 为什么我的 jquery switch 语句不起作用
- 否则语句不起作用是我在 jQuery 上的语法不正确
- JavaScript if 语句不起作用
- JavaScript 从 XML 中提取数据(如果 else 语句不起作用)