JavaScript parametr funkcji

0

Zazwyczaj programuje w C++. Chciałem spróbować swoich sił w programowaniu webowym kupiłem książkę pierwszy przykład jakiś quiz
i tam w pliku game.js był kod:

 if(jQuery){ 
  var checkAnswers = function(){ 
    var answerString = ""; 
    var answers = $(":checked"); 
    answers.each(function(i) { // tego nie rozumiem jak do tej funkcji dostał się ten argument
      answerString = answerString + answers[i].value; 
    }); 
  //  $(":checked").each(function(i) { 
  //    var answerString = answerString + answers[i].value; 
  //  }); 
    checkIfCorrect(answerString); 
  }; 
  var checkIfCorrect = function(theString){ 
    if(parseInt(theString, 16) === 811124566973){ 
      $("body").addClass("correct"); 
      $("h1").text("Wygrałeś!"); 
      $("canvas").show(); 
    } 
  }; 
  $("#question1").show(); 
}; 
if(impress){ 
  $("#question2").show(); 
}; 
if(atom){ 
  $("#question3").show(); 
}; 
if(createjs){ 
  $("#question4").show(); 
}; 
if(me){ 
  $("#question5").show(); 
}; 
if(require){ 
  $("#question6").show(); 
}; 
if($().playground){ 
  $("#question7").show(); 
}; 
if(jaws){ 
  $("#question8").show(); 
}; 
if(enchant){ 
  $("#question9").show(); 
}; 
if(Crafty){ 
  $("#question10").show(); 
};

w miejscu zaznaczonym moim komentarzem zastanawiam się czy to "i" to argument formalny czy aktualny jakim sposobem on reprezentuje cokolwiek i dlaczego quiz działa nawet jeśli wpisze odpowiedzi w różnej kolejności cały kod jest pod adresem
dalsze pliki to biblioteka jQuery,
main.css :

 
body{
  margin-left:50px;
}
#question1, #question2, #question3, #question4, #question5, 
#question6, #question7, #question8, #question9, #question10{
  display:none;
}
canvas{
  display:none;
}
.correct{
  background-color:#24399f;
  color:white;
}

i index.html:

 
<!DOCTYPE html> 
<html> 
  <head> 
    <meta charset="utf-8"> 
    <title>Quiz</title> 
    <link rel="stylesheet" type="text/css" href="main.css">  
  </head> 
  <body onclick="checkAnswers();"> 
    <h1>Quiz</h1> 
    <div id="quiz"> 
      <div id="question1"> 
        <div class="question">Który z tych typów plików nie jest używany do tworzenia stron internetowych?</div> 
        <input type="radio" name="question1" value="a"/> 
        <label>.html</label> 
        <input type="radio" name="question1" value="b"/> 
        <label>.exe</label> 
        <input type="radio" name="question1" value="c"/> 
        <label>.js</label> 
        <input type="radio" name="question1" value="d"/> 
        <label>.css</label> 
      </div> 
      <br /> 
      <div id="question2"> 
        <div class="question">Która para znaków jest używana do oznaczania obiektów JavaScript?</div> 
        <input type="radio" name="question2" value="a"/> 
        <label>[]</label> 
        <input type="radio" name="question2" value="b"/> 
        <label>;;</label> 
        <input type="radio" name="question2" value="c"/> 
        <label>{}</label> 
        <input type="radio" name="question2" value="d"/> 
        <label>()</label> 
      </div> 
      <br /> 
      <div id="question3"> 
        <div class="question">Krety są…</div> 
        <input type="radio" name="question3" value="a"/> 
        <label>wszystkożerne</label> 
        <input type="radio" name="question3" value="b"/> 
        <label>urocze</label> 
        <input type="radio" name="question3" value="c"/> 
        <label>obrzydliwe</label> 
        <input type="radio" name="question3" value="d"/> 
        <label>wszystkie powyższe</label> 
      </div> 
      <br /> 
      <div id="question4"> 
        <div class="question">Japoński znak "か" wymawia się…</div> 
        <input type="radio" name="question4" value="a"/> 
        <label>ka</label> 
        <input type="radio" name="question4" value="b"/> 
        <label>ko</label> 
        <input type="radio" name="question4" value="c"/> 
        <label>ke</label> 
        <input type="radio" name="question4" value="d"/> 
        <label>ki</label> 
      </div> 
      <br /> 
      <div id="question5"> 
        <div class="question">Stała grawitacji na Ziemi w przybliżeniu wynosi...</div> 
        <input type="radio" name="question5" value="a"/> 
        <label>10 m/s^2</label> 
        <input type="radio" name="question5" value="b"/> 
        <label>0,809 m/s^2</label> 
        <input type="radio" name="question5" value="c"/> 
        <label>9,81 m/s^2</label> 
        <input type="radio" name="question5" value="d"/> 
        <label>84,4 m/s^2</label> 
      </div> 
      <br /> 
      <div id="question6"> 
        <div class="question">Jak wygląda dziesiętna liczba 45 w systemie dwójkowym?</div> 
        <input type="radio" name="question6" value="a"/> 
        <label>101101</label> 
        <input type="radio" name="question6" value="b"/> 
        <label>110011</label> 
        <input type="radio" name="question6" value="c"/> 
        <label>011101</label> 
        <input type="radio" name="question6" value="d"/> 
        <label>101011</label> 
      </div> 
      <br /> 
      <div id="question7"> 
        <div class="question">4 << 2 = ...</div> 
        <input type="radio" name="question7" value="a"/> 
        <label>16</label> 
        <input type="radio" name="question7" value="b"/> 
        <label>4</label> 
        <input type="radio" name="question7" value="c"/> 
        <label>2</label> 
        <input type="radio" name="question7" value="d"/> 
        <label>8</label> 
      </div> 
      <br /> 
      <div id="question8"> 
        <div class="question">Jak obliczyć długość przeciwprostokątnej trójkąta prostokątnego, mając podane długości jego przyprostokątnych? </div> 
        <input type="radio" name="question8" value="a"/> 
        <label>pi*promień^2</label> 
        <input type="radio" name="question8" value="b"/> 
        <label>korzystając z twierdzenia Pitagorasa</label> 
        <input type="radio" name="question8" value="c"/> 
        <label>używając kalkulatora</label> 
        <input type="radio" name="question8" value="d"/> 
        <label>sin(bok1 + bok2)</label> 
      </div> 
      <br /> 
      <div id="question9"> 
        <div class="question">Prawda czy fałsz: aby gra była coś warta, musi zmieniać klatki z prędkością przynajmniej 60 na sekundę.</div> 
        <input type="radio" name="question9" value="a"/> 
        <label>prawda</label> 
        <input type="radio" name="question9" value="b"/> 
        <label>fałsz</label> 
      </div> 
      <br /> 
      <div id="question10"> 
        <div class="question">Dzięki serwerowi można...</div> 
        <input type="radio" name="question10" value="a"/> 
        <label>ukryć swój kod</label> 
        <input type="radio" name="question10" value="b"/> 
        <label>utworzyć świetną grę</label> 
        <input type="radio" name="question10" value="c"/> 
        <label>umożliwić graczom wspólną grę</label> 
        <input type="radio" name="question10" value="d"/> 
        <label>wszystkie powyższe</label> 
      </div> 
    </div> 
    <script src="jquery.js"></script> 
    <script src="impress.js"></script> 
    <!-- atom needs this to run --> 
    <canvas></canvas> 
    <script src="atom.js"></script> 
    <script src="easel.js"></script> 
    <script src="melon.js"></script> 
    <script src="yabble.js"></script> 
    <script src="jquery.gamequery.js"></script> 
    <script src="jaws.js"></script> 
    <script src="enchant.js"></script> 
    <script src="crafty.js"></script> 
    <script src="game.js"></script> 
  </body> 
</html> 


2

hasło na dziś: funkcja anonimowa.

each jest funkcją jQuery, która wykonuje w pętli funkcję, którą przekazujesz jako parametr (a więc sama definiuje ilość argumentów).

uproszczony kod:

function wykonaj_cos(parametr) {
  parametr(1,2);
}

wykonaj_cos(function(A, B) {
  console.log(A, B);
  // A = 1
  // B = 2;
});
0

Dzięki nie wiem czy mogę powiedzieć z jakiej książki to wziąłem nie wiem czy wtedy nie złamie prawa ale skoro w tej książce napisali że nic nie trzeba wiedzieć żeby ją czytać
to chyba powinni wyjaśniać takie rzeczy ale mam jeszcze jedno pytanie dlaczego quiz działa poprawnie nawet jeśli kliknę odpowiedzi nie po kolei

0

Dzięki nie wiem czy mogę powiedzieć z jakiej książki to wziąłem nie wiem czy wtedy nie złamie prawa

lol

dlaczego quiz działa poprawnie nawet jeśli kliknę odpowiedzi nie po kolei

bo funkcja checkAnswers wykonuje się za każdym razem jak klikniesz COKOLWIEK na stronie - ktoś to strasznie niemądrze zrobił

0

dzięki teraz wszystko jasne

1 użytkowników online, w tym zalogowanych: 0, gości: 1