Ostatnio pisałem dużo kodu ES6 dla io.js. Na wolności nie ma zbyt wiele kodu do nauki, więc czuję, że definiuję własne konwencje.
Moje pytanie brzmi, kiedy w użyciu const
vs let
.
Stosowałem tę zasadę: Jeśli to możliwe, użyj const
. Używaj tylko, let
jeśli wiesz, że jego wartość musi się zmienić. (Zawsze możesz wrócić i zmienić a const
na a, let
jeśli później okaże się, że musisz zmienić jego wartość).
Głównym powodem tej reguły jest to, że łatwo ją konsekwentnie stosować. Nie ma szarych obszarów.
Chodzi o to, że kiedy stosuję tę zasadę, w praktyce 95% moich deklaracji to const
. I to wydaje mi się dziwne. Jestem tylko przy użyciu let
rzeczy jak i
w for
pętli, lub od czasu do czasu na takie rzeczy jak skumulowane sumy Fibonacciego (który nie pojawia się wiele w życiu). Zaskoczyło mnie to - okazuje się, że 95% „zmiennych” w moim kodzie ES5 do tej pory dotyczyło wartości, które się nie zmieniają. Ale widzenie const
całego mojego kodu wydaje się jakoś źle.
Moje pytanie brzmi: czy można const
tak często korzystać? Czy naprawdę powinienem robić takie rzeczy const foo = function () {...};
?
A może powinienem zarezerwować const
na takie sytuacje, w których kodujesz literał na samym szczycie modułu - na przykład w przypadku wielkich liter const MARGIN_WIDTH = 410;
?
function foo() {...}
jest lepszy niż<anything> foo = function() {...}
function foo() {...}
może powodować niewielkie zamieszanie podczas debugowania z powodu podnoszenia. Ponadto jego istnienie oznacza, że mamy dwie konstrukcje, które robią to samo, ale jedna z nich działa tylko w bardzo specyficznym kontekście. (Możesz użyć wyrażenia funkcyjnego wszędzie tam, gdzie istnieje wyrażenie, ale możesz użyć deklaracji funkcji tylko na poziomie instrukcji.) Jeśli wolisz zwięzłość, problemem może być to, że składnia wyrażenia funkcyjnego używa całego słowa function
.
const
tego jest w porządku .