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.
djcat Δημοσ. 8 Οκτωβρίου 2018 Δημοσ. 8 Οκτωβρίου 2018 Αυτό θα σε βοηθήσει να καταλάβεις: https://www.electrictoolbox.com/default-values-missing-parameters-javascript/ 1
k33theod Δημοσ. 9 Οκτωβρίου 2018 Δημοσ. 9 Οκτωβρίου 2018 Στη συγκεκριμένη περίπτωση δεν χρειάζεται. Εννοώ στο ορισμό της συνάρτησης. 1
AndreasV. Δημοσ. 9 Οκτωβρίου 2018 Μέλος Δημοσ. 9 Οκτωβρίου 2018 (επεξεργασμένο) djacat, k33theod ευχαριστώ! Στην ουσία η παράμετρος έχει νόημα όταν καλείς τη function με συγκεκριμένη τιμή..κάπως έτσι το κατάλαβα. Επεξ/σία 9 Οκτωβρίου 2018 από AndreasV.
k33theod Δημοσ. 9 Οκτωβρίου 2018 Δημοσ. 9 Οκτωβρίου 2018 (επεξεργασμένο) Είναι λίγο ιστορία με τις παραμέτρους στις συναρτήσεις. Σαν ιδέα είναι όπως περίπου τα μαθηματικά f(x)=3*x+5 Το 1ο και βασικό είναι ότι βάζουμε ως παραμέτρους πληροφορίες που χρειάζονται για να εκτελεστεί η συνάρτηση και τις χρησιμοπούμε μέσα στή συνάρτηση, κάτι που εσύ στο παράδειγμά σου δεν κάνεις😁 ή νομίζεις οτι κάνεις. πχ Θέλω μια συνάρτηση που να υπολογίζει το εμβαδό τριγώνου οι πληροφορίες που χρειάζομαι είναι basi και ipsos. function emb_trigonou(basi, ipsos) { return basi*ipsos/2} Στα αντικείμενα όπως έχεις εσύ λειτουργεί κάπως διαφορετικά (πιο απλά), εφόσον το basi και ipsos είναι properties είναι ορατά από όλες τις μεθόδους και αυτό που πρέπει να κάνεις είναι emb_trigonou: function() { return this.basi*this.ipsos/2} Αυτά γιατί μπορεί να μπερδευτείς. Θέλει λίγο διάβασμα και πολλές ασκήσεις για να καταλάβεις πως δουλεύει. Επεξ/σία 9 Οκτωβρίου 2018 από k33theod 1
AndreasV. Δημοσ. 10 Οκτωβρίου 2018 Μέλος Δημοσ. 10 Οκτωβρίου 2018 Σαν να λεμε οτι σε περιπτωση που εχω function μεσα σε αντικειμενο(δηλαδη method) δε χρειαζεται να βαλω παραμετρους. Αν ομως η function δεν ειναι μεσα σε αντικειμενο τοτε πρεπει. Σωστα?
defacer Δημοσ. 10 Οκτωβρίου 2018 Δημοσ. 10 Οκτωβρίου 2018 Όχι, δεν είναι τόσο απλοϊκό. Επίσης εδώ εμπλέκεται και ο περίεργος τρόπος με τον οποίο λειτουργεί το this στην JS, που είναι διαφορετικός από βασικά οποιαδήποτε άλλη γλώσσα. Για παράδειγμα, αν κάνεις var calcTips = john.calcTips calcTips() τότε παρόλο που η συνάρτηση θα κληθεί κανονικά, δεν θα δουλέψει γιατί το this δε θα είναι το αντικείμενο που περιμένεις (ενώ αν το έπαιρνε σαν παράμετρο δε θα είχες αυτό το πρόβλημα). Δεν υπάρχει μια εύκολη και καθολική απάντηση στην ερώτηση σου. Η συνάρτηση χρειάζεται κάποια δεδομένα για να λειτουργήσει πάνω σε αυτά. Το αν θα τα πάρει μέσω this ή μέσω παραμέτρων ή αναφερόμενη σε κάποια μεταβλητή που είναι in scope στο σημείο ορισμού της συνάρτησης είναι μια επιλογή που κάνουμε λαμβάνοντας διάφορα πράγματα υπόψη. 1
k33theod Δημοσ. 10 Οκτωβρίου 2018 Δημοσ. 10 Οκτωβρίου 2018 Τελικά η απάντηση της ερώτησης "simple javascript question" αποδυκνείεται ότι δεν είναι και τοσο simple. 😀
AndreasV. Δημοσ. 10 Οκτωβρίου 2018 Μέλος Δημοσ. 10 Οκτωβρίου 2018 Η αλήθεια είναι πως περίμενα να είναι κάτι απλούστερο εξού και ο τίτλος 'simple'. Τελικά δε μπορώ να πω ότι κατάλαβα ακριβώς τι παίζει με τις παραμέτρους αν και τα παραδείγματα που μου δώσατε όλοι ήταν λίγο πιο διαφωτιστικά. Φαντάζομαι μέσω εξάσκησης θα το καταλάβω πλήρως...δοκιμάζοντας και τρέχοντας διάφορες συναρτήσεις. Εσείς π.χ ως πιο έμπειροι καταλαβαίνετε αμέσως αν πρέπει να βάλετε παράμετρο σε μια συνάρτηση ή και πάλι δοκιμάζοντας πάτε? Thanks!
k33theod Δημοσ. 10 Οκτωβρίου 2018 Δημοσ. 10 Οκτωβρίου 2018 Θα έλεγα ότι δεν είναι ιδιαίτερα δύσκολο να καταλάβεις πότε μια συνάρτηση χρειάζεται παράμετρο. Ο γενικός κανόνας αυτός που σου είπα. Μετά κοιτάς και άλλα πράγματα. Πχ. Τις παραμέτρους η συνάρτησή σου κάπου πρέπει να τις βρεί, δεν θα τις πληκτολογήσεις (στις περισσότερες των περιπτώσεων), εδώ έρχεται η ένοια του scope. Έχω object και μπορώ να πάω με this; Θέλω να η συνάρτηση να αλλάζει την παράμετρο, εδώ έρχεται η ένοια του by value, by reference Τι είναι πιο οικονομικό, τι είναι πιο γρήγορο αυτά τα δύο δεν πάνε πάντα μαζί. Λαμβάνεις υπόψη ιδιαιτέροτητες της γλώσσας άλλο javascript άλλο java άλλο c. και άλλα θα έλεγα αλλά όλα αυτά μόνο θα σε μπερδέψουν. Φαντάζομαι δεν έχεις εμπειρία από άλλες γλώσσες ή έχεις;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα