Ja, ich weiß, dass das wahrscheinlich eine sehr dumme Frage ist, aber das nervt mich schon eine Weile.Warum Funktionsparameter Vs. Globale Variablen?
Ok, also lerne ich schon eine Weile JavaScript und habe alles perfekt verstanden. . .except für Funktion "Parameter" (ich glaube, sie werden genannt).
Mir wurde beigebracht, dass sie wie so funktionieren:
function test(number) {
document.write(number);
};
test(1);
test(12);
Dies macht Sinn für mich. In letzter Zeit bin ich jedoch auf etwas anderes gestoßen.
var counterDays = document.getElementById('days');
var counterHours = document.getElementById('hours');
var counterMinutes = document.getElementById('minutes');
var counterSeconds = document.getElementById('seconds');
var date = new Date('December 28, 2016 00:00:00');
function updateTimer(date) {
var time = date - new Date();
return {
'days': Math.floor(time/(1000 * 60 * 60 * 24)),
'hours': Math.floor((time/(1000 * 60 * 60)) % 24),
'minutes': Math.floor((time/1000/60) % 60),
'seconds': Math.floor((time/1000) % 60),
'total': time
};
};
function startTimer(counterDays, counterHours, counterMinutes, counterSeconds, date) {
var timerInterval = setInterval(function() {
var timer = updateTimer(date);
//Changes the text of the 'counter'
counterDays.innerHTML = timer.days;
counterHours.innerHTML = timer.hours;
counterMinutes.innerHTML = timer.minutes;
counterSeconds.innerHTML = timer.seconds;
window.onload = function() {
startTimer(counterDays, counterHours, counterMinutes, counterSeconds, date);
};
<span id="days"> </span>
<span id="hours"> </span>
<span id="minutes"> </span>
<span id="seconds"> </span>
Was verstehe ich nicht ernst ist, warum die updateTimer
innerhalb der Klammern muss immer date
, wenn die Variable date
eine bereits vorhandene Variable im globalen Bereich ist. Gleiches mit startTimer
. Ich verstehe nicht, warum ich das weitergeben muss. Warum nicht einfach auf die Variable innerhalb der Funktion zugreifen, da sie einen globalen Geltungsbereich hat, und damit fertig sein. Stattdessen muss ich die Variable als Parameter übergeben, damit die Funktion funktioniert.
Ich habe versucht und versucht, aber der einzige Weg, um die Funktion funktionieren zu lassen, ist durch die Variablen übergeben. Warum das???
Als ich noch lerne, habe ich im Internet nach mehr Informationen über Funktionen und ihre Parameter gesucht, aber alle zeigen mir etwas ähnlich zu meinem ersten Beispiel. Ich weiß, dass das alles wahrscheinlich nur über meinen Kopf geht, aber für das Leben von mir verstehe ich es einfach nicht.
Hinweis: Ich lerne immer noch, tut mir leid, wenn diese ganze Frage einfach dumm ist.
Auch der Code für den JS, mit dem ich ein Problem habe, wird nicht ausgeführt. Dies liegt daran, dass ich nicht meinen gesamten Code eingeben möchte, sondern nur den Code, mit dem ich Probleme habe.
„Warum greifen nicht nur die Variable innerhalb der Funktion, da sie einen globalen Geltungsbereich haben und damit erledigt werden. " Stellen Sie sich vor, Ihr Programm wächst in der Größe 10x oder 100x größer. Es wird unhandlich werden. –
Es tut mir leid, aber ich verstehe nicht, warum das Entfernen der Parameter mein Programm wachsen lassen würde. . . – BZCC
Sie müssen * sie * nicht als Parameter übergeben. Aber es macht das Programm leichter zu handhaben. Schlagen Sie die Wörter "Verkapselung" und "Abstraktion" nach. Sie wollen nicht versuchen, die gesamte Struktur eines Systems gleichzeitig in Ihrem Kopf zu halten; vielleicht kannst du es tun, aber jeder andere, der an deinem Code arbeitet, kann nicht (und wenn sie etwas verändern, wird es dein mentales Modell zerstören). – Kittsil