Mam następujący kod redacted:Dlaczego należy eksportować moduł na dole pliku?
module.exports = {
read: read,
write: write,
};
var read = function(parameters, config, next) {
/* <snip> */
};
var write = function(parameters, config, next) {
/* <snip> */
};
Jeśli pójdę do require()
ten plik w innym miejscu, to awarię węzła i powiedzieć, że żądany obiekt nie ma metody read
lub write
. Czy zmienne podciąganie nie pociągnęłoby funkcji powyżej modules.export = { ... };
?
Dlaczego zmienna nie zostanie podniesiona powyżej przypisania 'module.exports'? Czy 'module' jest specjalnym obiektem węzła, który zostaje zadeklarowany i podniesiony przed renderowaniem jakiegokolwiek innego kodu w pliku? – Scott
Zmienne nie zostaną podniesione. Tylko nazwane funkcje zadeklarowane bez "var". –
Ahhh, wróciłem i ponownie przeczytałem twój połączony artykuł. Deklaracja zmiennej jest podnoszona, ale wartość (w moim przypadku funkcja) jest przypisana dopiero później, podczas gdy nazwana funkcja zostanie podniesiona wraz z jej logiką. Gotchya. – Scott