请不要对我太苛刻,因为我刚从学校开始学习并且正在使用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");

10-06 04:47