AndreasV. Δημοσ. 8 Οκτωβρίου 2018 Δημοσ. 8 Οκτωβρίου 2018 (επεξεργασμένο) Καλησπέρα σε όλους! Μιας και είμαι νέος στη Javascript θα ήθελα κάποιος να μου αποσαφηνίσει το εξής: στην calcTips function χρειάζεται παράμετρος? Όχι? Ή δεν έχει σημασία...γενικά δεν έχω πολυκαταλάβει σε ποιες περιπτώσεις μπαίνει παράμετρος στις functions και σε ποιες όχι(πχ το συγκεκριμένο παράδειγμα δουλεύει είτε βάλω, είτε όχι). Btw στο ακόλουθο παράδειγμα κώδικα γίνεται ένας απλός υπολογισμός των tips που αφήνει κάποιος σ ένα εστιατόριο και της συνολικής τιμής που πληρώνει(συμπεριλαμβανομένων των tips). var john = { fullName: 'John Smith', bills: [124, 48, 268, 180, 42], calcTips: function(bill) { this.tips = []; this.finalValues = []; for (var i=0; i<this.bills.length; i++) { var tip; var bill = this.bills[i]; if(bill<50) { tip = bill * 20/100; } else if (bill>=50 && bill<200) { tip = bill * 15/100; } else { tip = bill *10/100; } //Array which contains all the tips //Array which contains the final payment this.tips[i] = tip; this.finalValues[i] = tip + bill; } } } john.calcTips(); console.log(john); Επεξ/σία 8 Οκτωβρίου 2018 από AndreasV.
alou Δημοσ. 9 Οκτωβρίου 2018 Δημοσ. 9 Οκτωβρίου 2018 Αν προσπαθείς να καταλάβεις τα βασικά, αυτό δεν είναι το καλύτερο παράδειγμα. Υπάρχουν τόσα πράγματα ενδιάμεσα σε αυτό που ρωτάς και αυτό που συμβαίνει που δεν ξέρω αν αυτό που θα σου πω θα έχει νόημα για σένα, αλλά: το john είναι ένα object και το this είναι ένα keyword που στην περίπτωση του calctips αναφέρεται στο ίδιο το object. Δηλαδή var obj = {a: 999, b: function() { return this.a;}} console.log(obj.b()) // => 999 Τώρα, στο function περνάς μια παράμετρο bill. Το πρώτο πράγμα που γίνεται όταν 'τρέξει' το function, είναι να φτιαχτεί ένα local scope με ότι μεταβλητές δηλώνονται σαν παράμετροι ή μέσα στο body του function. Το bill δηλώνεται σαν παράμετρος άρα μπαίνει αυτόματα στις local variables του function και λίγο πιο κάτω, το ξανακάνεις initialize και του αναθέτεις μια τιμή. Αυτό αφενός δεν έχει νόημα γιατί δεν χρησιμοποιείς την παράμετρο, αφετέρου αν αντί για var η μεταβλητή δηλωθεί με let δεύτερη φορά, θα προκύψει συντακτικό σφάλμα (που είναι και το λογικό). Η παράμετρος, έχει νόημα μόνο αν την χρησιμοποιήσεις όταν καλείς το function, δηλαδή function foo(number){ console.log(number*2); } foo(100); // => 200 foo(200); // => 400 Επομένως, στη συγκεκριμένη περίπτωση, η παράμετρος ούτε νόημα έχει, ούτε χρησιμοποιείται πουθενά. Το bill έρχειται από το this.bills που αναφέρεται στο bills property του object μέσα στο οποίο βρίσκεται η function. 1
AndreasV. Δημοσ. 9 Οκτωβρίου 2018 Μέλος Δημοσ. 9 Οκτωβρίου 2018 Αυτο ειχα καταλαβει κι εγω...οτι η παραμετρος εχει νοημα οταν καλεις τη function δινοντας τιμη συγκεκριμενη αλλα ηθελα να ειμαι απολυτα σιγουρος οτι ετσι συμβαινει. Ευχαριστω!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα