Anlamsallığı var
velet
var
ve let
makineye 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.
var
Ve kullanmanın etkilerilet
var
ve let
diğ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 const
beyanı olduğunu değişken. const
Başvurulan bir diziye öğe ekleyebilir veya bu diziden öğe kaldırabilir ve const
baş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.freeze
nesneyi 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 var
ve let
iyi bir eşleşme
let
ve var
değ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
.