请不要对我太苛刻,因为我刚从学校开始学习并且正在使用Ubuntu。我已经编写了这段代码(这可能是有史以来最简单的代码),它简单地讲述了字节到其他单位(Mebi,Kibi ...)的转换。当我使用console.log时,它始终显示Kibi。
function unit(x){
var x;
if (x=10){
x='Kibi';
} else if (x=20){
x='Mebi';
} else if (x=30){
x='Gibi';
}
return x;
}
console.log("2^10 bytes are 1 " + unit(10) + "byte");
console.log("2^20 bytes are 1 " + unit(20) + "byte");
console.log("2^30 bytes are 1 " + unit(30) + "byte");
就像我说的那样,它总是在所有控制台输出上显示Kibi,对我来说,我不理解的有趣之处在于,如果我更改了第一个console.log
console.log('2^10 bytes are 1 ' + unit(20) + 'byte'
即使我从未调用unit(10),它仍将显示Kibi的所有控制台输出。
我真的不明白为什么会这样,任何帮助将不胜感激。谢谢。
最佳答案
此代码段中所有更改的内容恰恰是两条评论所建议的内容。删除x的多余初始化,并在比较中将“ =”更改为“ ==”。
function unit(x){
if (x == 10){
x='Kibi';
} else if (x == 20){
x='Mebi';
} else if (x == 30){
x='Gibi';
}
return x;
}
console.log("2^10 bytes are 1 " + unit(10) + "byte");
console.log("2^20 bytes are 1 " + unit(20) + "byte");
console.log("2^30 bytes are 1 " + unit(30) + "byte");