2013-10-17 11 views
5

Ich habe diese MethodeWas sollte die Suchmethode zurückgeben, wenn nichts gefunden wird?

var link = this.find_first_link(selectedElem); 

, die ein Objekt zurückgeben sollte. Ich bin nicht sicher, was es zurückgeben sollte, wenn kein Element gefunden wird - null, undefiniert oder falsch? Ich habe 'falsche' Option abgelehnt, da ich denke, dass es hier nicht passt, also wähle ich zwischen null oder undefiniert. Ich habe gelesen, dass 'undefined' sollte verwendet werden, wo eine Art von Ausnahme oder Fehler auftritt, so dass diese Methode zur Zeit null zurückgibt. Ist das in Ordnung?

Antwort

6

Schauen Sie sich an, was in Methoden gemacht wird, die Sie in Ihrem Browser haben.

getElementById gibt null zurück, wenn kein Element mit der angegebenen ID vorhanden ist.

Das ist, was null entwickelt wurde für: um die Abwesenheit eines Objekts darzustellen (typeof null ist "object"). Verwenden Sie es, wenn der erwartete zurückgegebene Typ "object" ist, aber Sie haben kein Objekt zurückgeben. Es ist besser als undefined hier, weil Sie undefined haben würden, bevor Sie sogar entschieden haben, was Sie in die Variable einfügen sollen oder bevor Sie die Funktion aufrufen.

Von the description of null in the MDN:

In APIs, wird null oft an Ort und Stelle abgerufen, wo ein Objekt erwartet werden kann, aber kein Objekt ist relevant.

Ja, verwenden Sie null.

+5

Als eine Randnotiz, geben Sie null zurück, wenn Ihre Funktion eine Sache zurückgeben sollte, aber nicht null zurückgeben, wenn Ihre Funktion ein Array von Dingen zurückgeben sollte. Für Funktionen, die Arrays zurückgeben, wenn nichts gefunden wird, sollte stattdessen ein leeres Array zurückgegeben werden. Ich habe eine Menge Code gesehen, wo in solchen Fällen null zurückgegeben wird, und es führt immer zu dummen '! = Null'-Prüfungen vor for-Schleifen. – slebetman

+1

Guter Vorschlag, im Zweifel auf bestehende APIs zu schauen. – promanski

0

Ja

var link = this.find_first_link (selectedElem);

Es wird NULL zurückgeben.

+2

Das OP fragt, was seine Methode "find_first_link" zurückgeben soll, wenn kein Ergebnis vorliegt. nicht das, was * jetzt * zurückgibt. – Marty

Verwandte Themen