2017-07-20 2 views
0

Je veux faire une variable "ville" globale et l'utiliser dans une autre fonction. Je demande une donnée JSON et il semble fonctionner dans cette fonctionVariable JSON indéfinie quand globale

var city; 

function conditions(data) { 
     var city = data.current_observation.display_location.full; 
     var wcode = data.current_observation.icon; 

     $('#city').append('<h2>' +'Weather forecast in ' + city + '</h2>'); 
     $('#city').addClass('headings-style'); 

    } 

Mais whe j'essaie d'utiliser la variable ville dans une autre fonction que je reçois une donnée non définie:

function forecastDays(info) { 
     var locationOne = info.forecast.simpleforecast.forecastday; 
     locationOne.forEach(function (daysPlus) { 

     var high = daysPlus.high.celsius; 
     var low = daysPlus.low.celsius; 
     var arr = ["day1", "day2", "day3", "day4"]; 
     jQuery.each(arr, function (i, val) { 

      $("#temp_" + val).html('<p>' + city + 'High: ' + high + '&deg;C' + '<br>' + ' Low: ' + low + '&deg;C' + '</p>'); 

      }); 
     }); 

S'il vous plaît , Aidez-moi.

+2

Vous êtes-déclarer ' ville' à l'intérieur de 'conditions'. Faites 'city = ...' au lieu de 'var city = ...'. – ideaboxer

+0

Une bonne question! C'est une erreur souvent commise et il est donc bon que l'on s'y attarde. –

Répondre

4

Au lieu de faire

var city = data.current_observation.display_location.full; 

vous devriez faire

city = data.current_observation.display_location.full; 

afin de définir la valeur de la variable la city globale. En réutilisant le mot-clé var, une nouvelle variable city sera déclarée dans la portée de la fonction plutôt que globale.

-1

supprimer var city dans funtion conditions

1

peu, en retard, mais voici un exemple. (@J. Chen donna la réponse)

Lorsque vous utilisez var city = vous redéfinir la variable dans le cadre de la fonction, il est donc plus accessible de la portée mondiale.

Dans l'exemple ci-dessous, la variable city est utilisé correctement dans la portée globale, où la variable town est redéfinie dans le cadre de la fonction:

var city; 
 
var town; 
 

 
function foo() { 
 
    city = "New York"; 
 
    var town = "Boston"; 
 
}; 
 

 
function bar() { 
 
    console.log(city); 
 
    console.log(town); 
 
} 
 

 
foo(); // assigns the variable a value 
 
bar(); // console "New York"/undefined
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>