Υπάρχει κάποιος έλεγχος αν μια τιμή δεν είναι null και δεν είναι κενή συμβολοσειρά στη Javascript; Χρησιμοποιώ το ακόλουθο:
var data; //get its value from db
if(data != null && data != '') {
// do something
}
Αλλά αναρωτιέμαι αν υπάρχει κάποια άλλη καλύτερη λύση. Ευχαριστώ.
Αν θέλετε πραγματικά να επιβεβαιώσετε ότι μια μεταβλητή δεν είναι null και δεν είναι κενή συμβολοσειρά, θα γράφατε:
if(data !== null && data !== '') {
// do something
}
Παρατηρήστε ότι άλλαξα τον κώδικά σας για να ελέγξω την ισότητα τύπου (!==
|===
).
Αν, ωστόσο, θέλετε απλώς να βεβαιωθείτε, ότι ένας κώδικας θα εκτελεστεί μόνο για "λογικές" τιμές, τότε μπορείτε, όπως έχουν ήδη αναφέρει άλλοι, να γράψετε:
if (data) {
// do something
}
Δεδομένου ότι, στη javascript, τόσο οι μηδενικές τιμές, όσο και οι κενές συμβολοσειρές, ισούνται με false (δηλ. null == false
).
Η διαφορά μεταξύ αυτών των 2 τμημάτων κώδικα είναι ότι, για το πρώτο, κάθε τιμή που δεν είναι συγκεκριμένα null ή κενή συμβολοσειρά, θα εισέλθει στο if
. Όμως, στο δεύτερο, κάθε τιμή που μοιάζει με αληθινή θα εισέλθει στο if
: οι false
, 0
, null
, undefined
και κενές συμβολοσειρές δεν θα εισέλθουν.
Τόσο το null
όσο και η κενή συμβολοσειρά είναι ψευδείς τιμές στο JS. Επομένως,
if (data) { ... }
είναι απολύτως επαρκής.
Μια σημείωση στο περιθώριο όμως: Θα απέφευγα να έχω στον κώδικά μου μια μεταβλητή που θα μπορούσε να εκδηλωθεί σε διαφορετικούς τύπους. Αν τα δεδομένα θα είναι τελικά ένα αλφαριθμητικό, τότε θα όριζα αρχικά τη μεταβλητή μου με ένα κενό αλφαριθμητικό, ώστε να μπορείτε να το κάνετε αυτό:
if (data !== '') { ... }
χωρίς το null (ή οποιοδήποτε περίεργο πράγμα όπως data = "0"
) να μπαίνει στη μέση.
Τόσο το null όσο και το empty μπορούν να επικυρωθούν ως εξής:
<script>
function getName(){
var myname = document.getElementById("Name").value;
if(myname != '' && myname != null){
alert("My name is "+myname);
}else{
alert("Please Enter Your Name");
}
}
</script>,