Hallo,
ich arbeite gerade das Buch Nick Morgan, JavaScript, durch. Dabei sind bei mir zwei Fragen aufgekommen die mir das Buch nicht beantworten konnte.
1. Funktionen ohne Parameter.
In einem Code Beispiel wird eine Überschrift mit JQuery bewegt, wenn der User diese anklickt.
spontan hätte ich diie Aufrufende Funktion wiefolgt programmiert:
hat jedoch nicht funktionert, in der Lösung sieht der aufruf wiefolgt aus:
Frage: Muss ich Methoden die keine Parameter entgegen nehmen ohne die Rundenklammern aufrufen????
2. Funktionskörper kann auf äußere Variablen zugreifen?
Dieser Code-Ausschnitt stammt aus dem Hang-Man Spiel. Und ist die vorgeschlagene Lösung.
Konkkret geht es um die Methode updateGameState = function (guess, word, answerArray) Zeile 30 -40. Mir ist unklar wieso der Parameter answerArray mit in die Methode gegeben wird, aber nicht zurückgegeben?
Wenn ich den Parameter verändern kann ohne ihn zurück zugeben. Wieso geb ich ihn dann überhaupt in die Methode?
Und warum klappt da ohne this aufzurufen mit this.answerArray hätte ich es ein klein wenig nachvollziehen können.
Viele Grüße
Peter P.
ich arbeite gerade das Buch Nick Morgan, JavaScript, durch. Dabei sind bei mir zwei Fragen aufgekommen die mir das Buch nicht beantworten konnte.
1. Funktionen ohne Parameter.
In einem Code Beispiel wird eine Überschrift mit JQuery bewegt, wenn der User diese anklickt.
Code:
function changeAbstand() {
$("h1").offset({left :linkerAbstand, top : obererAbstand});
linkerAbstand += 2;
obererAbstand++;
if (linkerAbstand > 200){
linkerAbstand = 0;
}
}
spontan hätte ich diie Aufrufende Funktion wiefolgt programmiert:
Code:
$("h1").click(changeAbstand());
hat jedoch nicht funktionert, in der Lösung sieht der aufruf wiefolgt aus:
Code:
$("h1").click(changeAbstand);
Frage: Muss ich Methoden die keine Parameter entgegen nehmen ohne die Rundenklammern aufrufen????
2. Funktionskörper kann auf äußere Variablen zugreifen?
Dieser Code-Ausschnitt stammt aus dem Hang-Man Spiel. Und ist die vorgeschlagene Lösung.
Code:
<script>
var pickWord = function () {
var words = [
"javascript",
"monkey",
"amazing",
"pancake"
];
return words[Math.floor(Math.random() * words.length)];
};
var setupAnswerArray = function (word) {
var answerArray = [];
for (var i = 0; i < word.length; i++) {
answerArray[i] = "_";
}
return answerArray;
};
var showPlayerProgress = function (answerArray) {
alert(answerArray.join(" "));
};
var getGuess = function () {
return prompt("Guess a letter, or click Cancel to stop playing.");
};
var updateGameState = function (guess, word, answerArray) {
var appearances = 0;
for (var j = 0; j < word.length; j++) {
if (word[j] === guess) {
answerArray[j] = guess;
appearances++;
}
}
return appearances;
};
var showAnswerAndCongratulatePlayer = function (answerArray) {
showPlayerProgress(answerArray);
alert("Good job! The answer was " + answerArray.join(""));
};
var word = pickWord();
var answerArray = setupAnswerArray(word);
var remainingLetters = word.length;
while (remainingLetters > 0) { showPlayerProgress(answerArray); var guess = getGuess();
if (guess === null) {
break;
} else if (guess.length !== 1) {
alert("Please enter a single letter.");
} else {
var correctGuesses = updateGameState(guess, word, answerArray);
remainingLetters -= correctGuesses;
}
}
showAnswerAndCongratulatePlayer(answerArray);
</script>
Konkkret geht es um die Methode updateGameState = function (guess, word, answerArray) Zeile 30 -40. Mir ist unklar wieso der Parameter answerArray mit in die Methode gegeben wird, aber nicht zurückgegeben?
Wenn ich den Parameter verändern kann ohne ihn zurück zugeben. Wieso geb ich ihn dann überhaupt in die Methode?
Und warum klappt da ohne this aufzurufen mit this.answerArray hätte ich es ein klein wenig nachvollziehen können.
Viele Grüße
Peter P.