为啥prompt()方法不填直接点确定或者点取消会输出“不及格”

为啥prompt()方法不填直接点确定或者点取消会输出“不及格”

<html>

<head>

    <meta charset="UTF-8">

    <title>成绩判断</title>

</head>

<body>

    <script>

   //补充代码

   var grade = prompt("请输入学生成绩"),aler;

   if(grade>=90 && grade<=100) {

       aler = "优秀";

   }else if(grade>=80 && grade<=89){

       aler = "良好";

   }else if(grade>=70 && grade<=79){

       aler = "一般";

   }else if(grade>=60 && grade<=69){

       aler = "及格";

   }else if(grade>=0 && grade<=59){

       aler = "不及格";

   }else{

       aler ="您输入的成绩有误";

   }

   alert(typeof grade);//不填直接确定是字符串,取消是对象

   alert(parseInt(grade));//返回NaN

   alert(aler);//显示不及格

</script>

</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

关系操作符(>,<,<=,>=)

如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较。

var grade = prompt("请输入学生成绩"),aler;
if(grade>=90 && grade<=100) {
    aler = "优秀";
}else if(grade>=80 && grade<=89){
    aler = "良好";
}else if(grade>=70 && grade<=79){
    aler = "一般";
}else if(grade>=60 && grade<=69){
    aler = "及格";
}else if(grade>=0 && grade<=59){
    aler = "不及格";
}else{
    aler ="您输入的成绩有误";
}

alert(aler);//显示不及格


当输入为空,grade 点确定返回【空字符串】,点取消返回【null】.

转换数值规则:

如果是null值,返回0

如果字符串为空的(不包含任何字符),则将其转换为0;

满足等于0的条件,所以提示返回不及格。

希望能帮到你。

请点【采纳答案】⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄

  • qq_天陨_0 提问者 #1
    意思是在if语句里null与“空字符串”才会转化为数值零,还有别的语句有这个规则吗? 经测试: 0==null是false, 0==""是true, 但parseInt(""),parseInt(null),parseFloat(""),parseFloat(null)都是NaN; 没懂,这到底是怎么规定的
    2017-12-30 22:51:08
lanrtop 2017-12-31 01:07:44

一.【意思是在if语句里null与“空字符串”才会转化为数值零,还有别的语句有这个规则吗?】

关于【操作数】的是否转换以及转换规则,主要根据【操作符】来决定。

具体请参考【javascript高级程序设计】第三章操作符36页。


二.     【经测试: 0==null是false, 0==""是true】

相等操作符规则:

要比较相等性之前,不能将null和undefined转换成其他任何值。

null 表示一个空对象指针。

相等操作符的一些特殊情况:

true == 1 //true
true == 2 //false
undefined == 0 //false
null == 0  //false
null == undefined //true

如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值


三.【parseInt(""),parseInt(null),parseFloat(""),parseFloat(null)都是NaN;】

有3个函数可以把非数值转换为数值:Number(),parseInt(),parseFloat().

第一个函数Number(),可以用于任何数据类型,而另外二个函数则专门用于把字符串转换成数值。这3个函数对于同样的输入会有返回不同的结果。

Number()函数的转换规则:

.......

如果是null值,返回0

parseInt()规则:

如果第一个字符不是数字字符或者负号,就会返回NaN。

parseFloat()规则跟parseInt()类似,关键字【小数点】。无法解析的数据类型,他会返回NaN。


因为涉及的内容规则有点多和杂,需要参考。

建议同学,买本【javascript高级程序设计】

  • 提问者 qq_天陨_0 #1
    ​谢谢师兄指点
    2017-12-31 10:30:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师