老哥们看怎么解决,在输入金额后结果怎是nan,哪数据类型出错了
javascript吧
全部回复
仅看楼主
level 1
Pureº🐒 楼主
2020年08月04日 03点08分 1
level 8
你这take 变量跟save变量不会同时有啊,变量作用域问题,
1判断一下是否存在,再进行加减
2变量作用域提升一下,并初始赋值
还有用户输入不一定是数字啊,异常输入都要判断
2020年08月04日 08点08分 2
好,谢谢点播,我再想想,在初学[委屈]
2020年08月04日 17点08分
level 12
// 写在里面
var balance = 100
var choose = prompt('请输入你需要的操作:\n 1.存钱 \n 2.取钱 \n 3.显示余额 \n 4.退出')
switch (choose) {
case '1':
var take = prompt('里面现存有' + balance + '块钱');
balance += parseInt(take);
alert('里面现存有' + balance + '块钱');
break;
case '2':
var save = prompt('里面现存有' + balance + '块钱');
balance -= parseInt(save);
alert('里面现存有' + balance + '块钱');
break;
case '3':
alert('里面现存有' + balance + '块钱');
break;
case '4':
alert('已退出账户');
}
2020年08月05日 01点08分 3
level 9
自己debugger[汗]
2020年08月05日 09点08分 5
level 1
parseInt(undefined)
2020年08月05日 14点08分 6
level 2
字符串take开头是中文 parseInt出来是NaN
2020年08月06日 00点08分 7
level 9
[茶杯]
2020年08月06日 00点08分 8
level 3
作用域问题,当初我也搞不清楚。
2020年08月06日 00点08分 9
level 1
这个不是作用域问题, 作用域的话,用let才会出现undefined, var 的话, 判断语句内的作用域和外层是同一个作用域。这边出现NAN的原因是taken 与 save 并不是纯数字(包括各种进制),所以最后转换出来的是NAN ,balance += NAN == NAN
2020年08月06日 08点08分 10
level 1
当然还有个问题,因为使用的是switch, taken 和 save 只会被定义一个,如果还想按照目前的写法的话,最好是在switch外定义一个默认值。
2020年08月06日 08点08分 11
1