Anlamsallığı varvelet
varve letmakineye ve diğer programcılara bir ifadedir:
Bu ödevin değerinin yürütme süreci boyunca değişeceğini düşünüyorum. Bu ödevin nihai değerine güvenmeyin.
varVe kullanmanın etkilerilet
varve letdiğer programcıları deklarasyondan nihai kullanıma kadar tüm araya giren kodu ve programın yürütülmesinde o noktada ödevin değeri ile ilgili nedeni okumaya zorlar.
ESLint ve diğer dil hizmetlerinin, daha sonraki atamalarda yanlış yazılan değişken adlarını doğru bir şekilde algılamaları ve iç kapsamın bildirmeyi unuttuğu dış kapsam değişken adlarının kapsam yeniden kullanımını doğrulamak için makine mantığını zayıflatırlar.
Ayrıca, çalışma zamanlarının tüm kodyolları üzerinde, aslında, sabitler olduklarını, bunları optimize etmeden önce tespit etmek için birçok yinelemeyi çalıştırmasına neden olurlar. Her ne kadar bu hata algılama ve geliştirici anlaşılabilirliğinden daha az sorun olsa da.
Ne zaman kullanılır? const
Başvurunun değeri yürütme sırasında değişmezse, programcının amacını ifade etmek için doğru sözdizimi kullanılır const. Nesneler için, referansın değerini değiştirmek, referans değişmez olduğu için başka bir nesneyi işaret etmek anlamına gelir, ancak nesne değildir.
" const" nesneler
Nesne başvuruları için işaretçi başka bir nesneye değiştirilemez, ancak oluşturulan ve atanan nesne constbeyanı olduğunu değişken. constBaşvurulan bir diziye öğe ekleyebilir veya bu diziden öğe kaldırabilir ve constbaşvurulan bir nesneye özellik anahtarlarını değiştirebilirsiniz .
Değişmez nesnelere ulaşmak için (yine, kodunuzu insanlar ve makineler için akıl yürütmeyi kolaylaştırır), Object.freezenesneyi beyan / atama / oluşturmada şu şekilde yapabilirsiniz:
const Options = Object.freeze(['YES', 'NO'])
Object.freeze'in performans üzerinde bir etkisi vardır, ancak kodunuz muhtemelen başka nedenlerle yavaştır. Profil vermek istiyorsunuz.
Değişken nesneyi bir durum makinesinde kapsülleyebilir ve derin kopyaları değerler olarak döndürebilirsiniz (Redux ve React durumu bu şekilde çalışır). Bunu ilk ilkelerden nasıl oluşturacağınıza ilişkin bir örnek için bkz . Browser JS'de değiştirilebilir genel durumdan kaçınma .
Ne zaman varve letiyi bir eşleşme
letve vardeğişebilir durumu temsil eder. Bence sadece gerçek değişebilir durumu modellemek için kullanılmalıdırlar . " Bağlantı canlı mı? "
Bunlar en iyi şekilde , zamanın herhangi bir noktasında sabit olan ve kodunuzun geri kalanının gerçekte ne ile ilgilendiği " bağlantının mevcut durumunu " temsil eden sabit değerleri gösteren test edilebilir durum makinelerinde kapsüllenir .
Programlama, yan etkiler oluşturma ve veri dönüştürme ile yeterince zordur. Değişkenlerle değişebilir bir durum oluşturarak her işlevi denenemez bir durum makinesine dönüştürmek, sadece karmaşıklığı biriktirir.
Daha nüanslı bir açıklama için bkz . Mutant Shun - Davaconst .