弹框不输入数字按取消为什么取消不了?

弹框不输入数字按取消为什么取消不了?

<script>

var i=prompt("请输入您猜的数字");

while(i!=5){

var result=(i<5)?"smaller":"bigger";

alert(result);

i=prompt("请输入您猜的数字");

}

if (i=5) {

alert("bingo")

}

</script>

不输入按取消还是会弹出smaller!这是为什么呢!

正在回答 回答被采纳积分+1

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

1回答
好帮手慕夭夭 2018-08-10 11:19:09

代码中如下表达式 :

http://img1.sycdn.imooc.com//climg/5b6d03ad0001bc3906580261.jpg

i<5如果成立就回执行问号后面的第一个smaller  ,不成立会输出bigger ,并且代码中有如下:

http://img1.sycdn.imooc.com//climg/5b6d040100016a4902080049.jpg

所以点击取消条件成立alert输出smaller  ,希望解答了你的疑惑 ,祝学习愉快 ,望采纳

  • 提问者 胖头鱼yyf #1
    我还是不能理解,弹出的是prompt()我不输入任何数字,点确认或者取消!他确实符合i!=5,但他也不符合i<5,它为什么会弹出smaller呢?
    2018-08-10 13:56:52
  • 好帮手慕夭夭 回复 提问者 胖头鱼yyf #2
    i<5在比较时会把i转换为数值比较 , 弹窗没有输入时点击确定获取的为空字符串 , 取消时转换为null , 这两者在转换规则中都是转换为0 ,所以条件是成立的 .这叫隐式转换哦
    2018-08-10 14:12:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
JavaScript基础入门 2018
  • 参与学习       547    人
  • 提交作业       206    份
  • 解答问题       640    个

JavaScript作为前端学习中的一个重要组成部分,本课程将带领你从最基础的语法开始,学习js的流程控制语句、函数、内置对象、DOM基础、DOM事件、BOM基础以及经典的js案例--轮播图。

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

在线咨询

领取优惠

免费试听

领取大纲

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