2013-08-14 2 views
0

Я определяю переменную с именем htmlARR в блоке if/else. Если я закомментирую переменную в блоке else, она показывает undefined, но если я не прокомментирую это, это покажет результат.if else variable scope отображается undefined in else in js

ПРИМЕЧАНИЕ: Я не могу охватить переменную и внутри.

coffeeAllColGenHTML : function (allData, more) { 
      console.log("WATER" + allData.WATER); 
      console.log("providerWATER" + allData.PROVIDER_WATER); 

      if (more) { 
       var htmlArr = []; 
       htmlArr.push(allData.COFFEE_DISH, "<br/><span class='sub-detail'>", allData.WATER, "</span>"); 
       return htmlArr.join(""); 
      } else { 
/* this line */ //var htmlArr = []; 
       htmlArr.push(allData.COFFEE_DISH, "<br/><span class='sub-detail'>", allData.PROVIDER_WATER, "</span>"); 
       return htmlArr.join(""); 
       //return allData.COFFEE_DISH; 
       //console.log(allData.COFFEE_DISH); 
      } 
     }, 
+2

Это потому, что вы определяете переменную внутри вашего 'if' заявление. Выдвиньте его. – Johannes

+3

javascript не имеет области блока, он имеет только глобальные и функциональные области –

ответ

10

Вы должны рамки вашей переменной декларации:

coffeeAllColGenHTM: function (allData, more) { 
     console.log("WATER" + allData.WATER); 
     console.log("providerWATER" + allData.PROVIDER_WATER); 
     var htmlArr = []; 

     if (more) { 
      htmlArr.push(allData.COFFEE_DISH, "<br/><span class='sub-detail'>", allData.WATER, "</span>"); 
      return htmlArr.join(""); 
     } else { 
      htmlArr.push(allData.COFFEE_DISH, "<br/><span class='sub-detail'>", allData.PROVIDER_WATER, "</span>"); 
      return htmlArr.join(""); 
      //return allData.COFFEE_DISH; 
      //console.log(allData.COFFEE_DISH); 
     } 
    },