JSON 全局变量未定义
JSON variable undefined when global
我想使变量“city”成为全局变量并在其他函数中使用它。我正在请求 JSON 数据,它似乎适用于此函数
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');
}
但是当我尝试在其他函数中使用变量 city 时,我得到了一个未定义的数据:
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 + '°C' + '<br>' + ' Low: ' + low + '°C' + '</p>');
});
});
拜托,帮忙。
而不是
var city = data.current_observation.display_location.full;
你应该做
city = data.current_observation.display_location.full;
为了设置全局city
变量的值。重新使用 var
关键字将在函数范围内声明一个新变量 city
,而不是全局变量。
删除 funtion conditions
中的变量 city
有点晚了,但这是一个例子。 (@J.Chen 提供了答案)
当您使用 var city =
时,您是在函数范围内重新定义变量,因此它不再可从全局范围访问。
在下面的示例中,city
变量在全局范围内被正确使用,其中 town
变量在函数范围内被重新定义:
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>
我想使变量“city”成为全局变量并在其他函数中使用它。我正在请求 JSON 数据,它似乎适用于此函数
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');
}
但是当我尝试在其他函数中使用变量 city 时,我得到了一个未定义的数据:
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 + '°C' + '<br>' + ' Low: ' + low + '°C' + '</p>');
});
});
拜托,帮忙。
而不是
var city = data.current_observation.display_location.full;
你应该做
city = data.current_observation.display_location.full;
为了设置全局city
变量的值。重新使用 var
关键字将在函数范围内声明一个新变量 city
,而不是全局变量。
删除 funtion conditions
city
有点晚了,但这是一个例子。 (@J.Chen 提供了答案)
当您使用 var city =
时,您是在函数范围内重新定义变量,因此它不再可从全局范围访问。
在下面的示例中,city
变量在全局范围内被正确使用,其中 town
变量在函数范围内被重新定义:
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>