Nie sądzę, że istnieje jakiś lepszy sposób robienia rzeczy, ale jestem skłonny unikać nieokreślonego jak najwięcej. Może to wynika z silnego tła OOP.
Kiedy próbuję naśladować OOP z Javascriptem, generalnie zadeklarowałbym i zainicjowałbym jawnie moje zmienne na wartość null (podobnie jak języki OOP, gdy zadeklarujesz zmienną instancji bez jawnego jej inicjowania). Jeśli nie mam zamiaru ich inicjować, to po co je zadeklarować? Podczas debugowania, jeśli nie ustawiłeś wartości dla obserwowanej zmiennej, zobaczysz ją jako niezdefiniowaną, niezależnie od tego, czy ją zadeklarowałeś, czy nie ...
wolę utrzymania undefined
dla specyficznych zachowań:
- podczas wywołania metody, każdy argument, że nie zapewniają musiałby nieokreślonej wartości. Dobry sposób na opcjonalny argument, implementujący określone zachowanie, jeśli argument nie jest zdefiniowany.
- leniwy init ... w mojej książce niezdefiniowany oznacza "nie zainicjowany: idź pobrać wartość", a null oznacza "zainicjalizowany, ale wartość była zerowa (np. Być może był błąd serwera?)"
- tablice: myArray [myKey] === null, jeśli dla tego klucza jest wartość pusta, niezdefiniowana, jeśli dla tego klucza nigdy nie została ustawiona wartość.
Uważaj jednak, że myVar == null
i myVar == undefined
zwrócić tę samą wartość, czy myVar jest niezdefiniowany, null lub coś innego. Użyj ===
, jeśli chcesz się dowiedzieć, czy zmienna jest niezdefiniowana.
Tylko uwaga ... myślę, że ' "[object null]"' 'wynik toString() 'może mieć niektóre niezgodności przeglądarki. –