Proszę wybacz mi pamięć, jeśli mam ten niepoprawny ... JavaScript nie jest moim preferowanym językiem implementacji.
Istnieje kilka powodów, dla których ktoś chciałby, aby funkcja no arg zawijała inne wywołanie funkcji. Chociaż proste wezwanie do window.alert("Hello");
jest czymś, co można sobie wyobrazić, zamiast tego dzwoniąc bezpośrednio zamiast sayHello()
.
Ale co, jeśli jest coś więcej? Masz tuzin miejsc, do których chcesz zadzwonić sayHello()
i window.alert("Hello");
zamiast tego napisałeś . Teraz chcesz to zrobić window.alert("Hello, it is now " + new Date())
. Jeśli wszystkie te połączenia zostały opakowane, gdy sayHello()
zmienisz je w jednym miejscu. Jeśli tego nie zrobiłeś, zmieniasz go w kilkunastu miejscach. To dotyczy „ Nie powtarzaj się” . Robisz to, ponieważ nie chcesz tego robić kilkanaście razy w przyszłości.
W przeszłości pracowałem z biblioteką i18n / l10n, która używała funkcji do lokalizacji tekstu po stronie klienta. Rozważ sayHello()
funkcję. Możesz go wydrukować, hola
gdy użytkownik jest zlokalizowany na język hiszpański. Może to wyglądać mniej więcej tak:
function sayHello() {
var language = window.navigator.userLanguage || window.navigator.language;
if(language === 'es') { window.alert('Hola'); }
else { window.alert("Hello"); }
}
Chociaż nie tak działała biblioteka. Zamiast tego miał zestaw plików, które wyglądały następująco:
# English file
greeting = hello
# Spanish file
greeting = hola
Następnie biblioteka wykryje ustawienia języka przeglądarki, a następnie utworzy funkcje dynamiczne z odpowiednią lokalizacją jako wartość zwracaną dla wywołania funkcji bez kłótni na podstawie odpowiedniego pliku lokalizacji.
Nie jestem wystarczającym koderem Javascript, aby powiedzieć, czy to dobrze, czy źle ... po prostu to było i może być postrzegane jako możliwe podejście.
Chodzi o to, że zawinięcie wywołania innej funkcji w jej własną funkcję jest często bardzo przydatne i pomaga w modularyzacji aplikacji, a także może skutkować łatwiejszym odczytem kodu.
Poza tym pracujesz z samouczka. Na początku należy wprowadzić rzeczy tak prosto, jak to możliwe. Wprowadzenie wywołań funkcji stylu varargs od samego początku może spowodować bardzo mylący kod dla osoby, która nie jest zaznajomiona z kodowaniem w ogóle. O wiele łatwiej jest przejść od braku argumentu, do argumentów, do stylu varargs - z każdym budowaniem na poprzednich przykładach i zrozumieniu.