关于如何通过提示传递值的混淆

时间:2017-10-22 05:37:50

标签: javascript

<script>
var p=prompt("how old are you","");
if(p)
alert(p+" is your age");
else
alert("You dint entered any input or you have entered a non-integervalue");
</script>

这是我的javascript代码。假设我输入我的0岁。
然后p = 0这意味着代码的else部分将执行。但代码正在执行if部分!
为什么会这样?
我是网络开发的新手,请帮助。
谢谢!

3 个答案:

答案 0 :(得分:0)

只需编写此代码:

&#13;
&#13;
var p=prompt("how old are you","");
alert(typeof(p));
&#13;
&#13;
&#13;

你会看到它是一个字符串。 "0"是一个字符串,因此它将被评估为true,因为它是非空 null

因此,在做任何事情之前将其解析为数字。

答案 1 :(得分:0)

parseInt()提示的结果,即将字符串结果解析为整数

现在,如果输入为"0",则会将其解析为00 == false

因此&#34;否则&#34;条件将根据需要发生。

此外,如果输入非整数字符串(例如字母),则结果为NaNelse部分将出现

var p=parseInt(prompt("how old are you",""));
if(p) {
alert(p+" is your age");
}
else {
alert("You dint entered any input or you have entered a non-integervalue");
}

答案 2 :(得分:0)

如果要确保提示输入为数字,则应使用isNaN函数检查输入。

    var p=prompt("how old are you",""); 
    if(!isNaN(p)) alert(p+" is your age"); 
    else alert("You dint entered any input or you have entered a non-integervalue");