如果/ else里面有函数JavaScript

时间:2017-09-27 18:08:37

标签: javascript function if-statement

请不要对我太过刻苦,因为我刚从学校开始,而且我正在使用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'




即使我从未调用过单位(10),它仍会显示所有控制台输出和Kibi。

我真的不明白为什么会这样,任何帮助都会非常值得赞赏。谢谢。

2 个答案:

答案 0 :(得分:1)

您已声明变量x而未为其设置值,并且=仅对于左侧分配,请遵循我的代码

继承我的代码



function unit(x){
    var nickname = '';
    if (x===10){
        nickname='Kibi';
    } else if (x===20){
        nickname ='Mebi';
    } else if (x===30){
      nickname ='Gibi';
    }
    return nickname;
}

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");




您的代码错误:

  1. variable x redeclared
  2. x = 10表示让10分配给变量x。
  3. 希望能帮到你

    编辑:

    对于你的问题,也许这段代码会更好

    
    
    function unit(x){
        var nickname = '';
        switch(x){
            case 10:
                nickname = 'kibi';
                break;
            case 20:
                nickname = 'Mebi';
                break;
            case 30:
                nickname = 'Gibi';
                break;
        }
        return nickname;
    }
    
    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");
    
    
    

    我告诉你

    变量不应该有歧义,一个变量做一件事。

    你可以关注@epascarello和@Keith的建议

答案 1 :(得分:0)

此代码段中所有更改的内容正是两条评论所建议的内容。删除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");