2013-10-17 16 views
5

mam ten sposóbCo powinna zostać zwrócona metoda wyszukiwania, jeśli nic nie znaleziono?

var link = this.find_first_link(selectedElem); 

która powinna zwracać obiektu. Nie jestem pewien, co powinien on zwrócić, jeśli nie zostanie znaleziony żaden element - null, undefined lub false? Odrzuciłem opcję "fałszywą", ponieważ nie wydaje mi się to tutaj odpowiednie, więc wybieram betwen null lub undefined. Czytałem, że "niezdefiniowany" powinien być używany tam, gdzie występuje jakiś wyjątek lub błąd, więc obecnie ta metoda zwraca wartość null. Czy to w porządku?

Odpowiedz

6

Zobacz, co dzieje się z metodami, które masz w swojej przeglądarce.

getElementById zwraca null gdy nie ma elementu z podanym identyfikatorem.

To właśnie zaprojektowano dla: null: reprezentowania braku obiektu (typeof null jest "object"). Użyj go, gdy oczekiwany zwracany typ to "object", ale nie masz obiektu do zwrócenia. To lepsze niż undefined tutaj, ponieważ masz przed sobą nawet undefined, zanim zdecydujesz, co wpisać w zmienną lub zanim jeszcze zadzwonisz do tej funkcji.

Od the description of null in the MDN:

W API, null jest często pobierane w miejscu, gdzie obiekt może być oczekiwany ale żaden obiekt nie jest istotne.

Tak, użyj null.

+5

Na marginesie zwracamy null, jeśli twoja funkcja powinna zwrócić jedną rzecz, ale nie zwracaj wartości null, jeśli twoja funkcja powinna zwrócić tablicę rzeczy. W przypadku funkcji zwracających tablice, jeśli nic nie zostanie znalezione, zamiast tego powinna zostać zwrócona pusta tablica. Widziałem mnóstwo kodu, w którym null jest zwracana w takich przypadkach i zawsze prowadzi do głupiego sprawdzenia '! = Null' przed pętlami. – slebetman

+1

Dobra sugestia, aby spojrzeć na istniejące API, jeśli masz wątpliwości. – promanski

0

Tak,

Link var = this.find_first_link (selectedElem);

Zwróci wartość NULL.

+2

OP pyta, jaka powinna być jego metoda, 'find_first_link', jeśli nie ma wyniku; nie to, co to * robi * obecnie zwraca. – Marty

Powiązane problemy