我在JS中制作一个bin-to-dec脚本(我知道js有自己的功能)作为我的作业,但它不起作用 - 它返回值为NaN。有人可以解释我在这里做错了什么吗?
function binToDec(bin){
var x=bin.length;
for (i=0; i<bin.length ; i++){
var r=Math.pow(parseInt(bin.charAt(i),10)*2, x-1);
x-=1;
y+=r;
}
return y;
}
var bin=prompt('input a bin number');
var y=binToDec(bin);
alert('this number in dec is: '+y);
答案 0 :(得分:1)
问题在于y
未在您的函数中声明,因此您会有效地尝试将r
添加到undefined
,从而产生NaN
。
这似乎有效:
function binToDec(bin){
var x=bin.length;
var y = -1;//Define y here
for (i=0; i<bin.length ; i++){
var r=Math.pow(parseInt(bin.charAt(i),10)*2, x-1);
x-=1;
y+=r;
}
return y;
}
var bin=prompt('input a bin number');
var y=binToDec(bin);
alert('this number in dec is: '+y);
请注意,默认情况下y
设置为-1
,因为您的结果似乎总是比我尝试0
时的结果多1(我还没有完全阅读你的逻辑,知道确切的原因,我只知道你需要考虑它)