.push () 데이터를 객체로 배열에 반환하는 다른 함수에 대해 (조건이 참이면) 호출하는 루프가있는 함수가 있습니다. 무슨 일이 일어나고 있는지 두 번째 함수에 대한 첫 번째 호출 후 첫 번째 함수의 루프가 중지되고 코드가 코드의 다음 부분으로 이동합니다 (크롬 콘솔에 오류가 없으며 올바른 개체가 푸시됩니다). 무엇이 문제입니까?
첫 번째 기능 :
if (window.localStorage.length > 1) {
track_items_for_chart = [];
for (i = 0; i < window.localStorage.length; i++) {
console.log(i);
var key_name = (window.localStorage).key(i);
var record_time = (window.localStorage.getItem(key_name));
if (record_time !== '[]') {
console.log("record_time !== '[]'");
if (key_name !== 'exp') {
console.log("key_name !== 'exp'");
if (key_name !== 'ripple-last-load') {
console.log("key_name !== 'ripple-last-load'");
var computed_info = get_total_km(key_name);
}
}
}
}
두 번째 기능 :
function get_total_km($object_key) {
// Get all the GPS data for the specific workout
var data = window.localStorage.getItem($object_key);
// Turn the stringified GPS data back into a JS object
data = jQuery.parseJSON(data);
if (data) {
// Calculate the total distance travelled
total_km = 0;
for (i = 0; i < data.length; i++) {
if (i === (data.length - 1)) {
break;
}
total_km += gps_distance(data[i].coords.latitude, data[i].coords.longitude, data[i + 1].coords.latitude, data[i + 1].coords.longitude);
}
total_km_rounded = parseFloat(total_km.toFixed(2));
// Calculate the total time taken for the track
start_time = new Date(data[0].timestamp).getTime();
end_time = new Date(data[data.length - 1].timestamp).getTime();
total_time_ms = end_time - start_time;
total_time_s = total_time_ms / 1000;
final_time_m = Math.floor(total_time_s / 60);
final_time_s = Math.floor(total_time_s - (final_time_m * 60));
// console.log({total_km_rounded: total_km_rounded, final_time_m: final_time_m, final_time_s: final_time_s});
var time_mas = parseFloat(final_time_m + "." + final_time_s);
track_items_for_chart.push(total_km_rounded, time_mas);
}
}
ּ for( var i =0)
두 기능 모두에서 시작하십시오 . 다른 언어를 사용했다면 약간 혼란 스럽지만 JS는 모든 i를 동일한 인수 로 표시 합니다 ( var로 정의 할 때까지) . 두 번째 함수가 실행 된 후 i는 이미 localstorage 길이보다 큽니다.
JS 인수 범위에 대해 더 읽어야합니다.
여기서 시작할 수 있습니다. JavaScript의 변수 범위는 무엇입니까?
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다