JavaScript函数的奇怪行为

时间:2015-05-22 20:52:41

标签: javascript if-statement return-value

我正在使用JavaScript代码来获取要显示的正确图像的字符串但不起作用,我在las控制台日志中找到一个空字符串。

function jsmBatteryLevelIMG(lvl)
{
var icono ="";
      console.log(lvl);

       if(lvl < 3.60) {
           icono= "/track/images/Batt000.png";
           console.log("000");
       } 
       else if(lvl <= 3.60) {
           console.log("025");
           icono= "/track/images/Batt025.png";
       }
console.log(icono); //<---Empty string ???
return icono;
};

但如果我这样做

function jsmBatteryLevelIMG(lvl)
{
    var icono ="";
    console.log(lvl);
    icono= "/track/images/Batt025.png";
    console.log(icono); //<---Not empty string ???
    return icono;
};

它运作正常。

我缺少什么?

修改

我试过这段代码

 function jsmBatteryLevelIMG(lvl)
 {
 var icono ="";
         console.log(lvl);

         if(lvl < 3.60) {
             icono= "/images/Batt000.png";
             console.log("001");
         } 
         else {
             console.log("026");
             icono= "/images/Batt025.png";
         }
 console.log(icono);
 return icono;

 };

现在我在变量icono中得到一个值但是没有像我之前写的第二个代码那样工作。

2 个答案:

答案 0 :(得分:1)

请记住,Javascript是一种区分大小写的语言。

您对Iconoicono的引用等效。

您已更新源代码以更改此内容,因此现在显而易见的是,在第二个示例中,icono现在反映了在console.log()调用之前给出的直接赋值。

在第一个示例中,如果lvl> 3.60。

,icono可能为空白

答案 1 :(得分:0)

这是lvl的价值?您的代码仅处理3.6及更低版本,因此icono未设置值if (lvl > 3.6)。你可能意味着:

function jsmBatteryLevelIMG(lvl)   
{  
    var icono = "";

    if(lvl < 3.60) {
       icono = "/track/images/Batt000.png";
    } 
    else if(lvl <= 7.20) {
       icono = "/track/images/Batt025.png";
    } 
    else if(level <= 10.8) {
       icono = "/track/images/Batt075.png";
    }
    else {
       icono = "/track/images/Batt100.png"
    }
    return icono;
};