Babil'in ES6 için rehber diyor:
letyenidirvar.
Görünüşe göre tek fark olmasıdır vargüncel kapsama alır fonksiyonu ise, letcari kapsama alır blokta . Bu cevapta bazı iyi örnekler var .
varES6 kodunda kullanmak için hiçbir neden göremiyorum . Belirli bir değişkeni tüm fonksiyona dahil etmek isteseniz bile, bunu , fiili kapsamı belirtmek için letne yapmalısınız var? Ve bir forbloğa veya başka bir şeye daha ince bir şey dahil etmek istiyorsanız , o zaman bunu da yapabilirsiniz.
Yani benim variçgüdüm ES6 kodunu yazarken tamamen kullanmayı bırakıyor.
Sorum şu, bu konuda yanlış mıyım? varTercih edilebilecek meşru bir dava var mı let?
letBir fonksiyonun en üstüne bir ifade koyarsanız , onu tüm fonksiyona dahil etmek istediğiniz kadar açık olduğunu düşünüyorum. Kullanmanın varbasitçe en üste yerleştirmekten daha net bir şey yaptığını sanmıyorum .
varhala var olan tek neden , geriye dönük uyumluluk olduğuna inanıyorum . Öyle olmasaydı, vartamamen kaldırılmışlardı ya letda ilk etapta hiç tanıtılmamışlardı ; bunun yerine, baştan varberi olması gereken şeyin anlamını değiştiriyorlardı .
varbana göre zayıf görünüyor ve etrafta atlayan üçüncü bir değişken türünü garanti etmek için yeterli değil. A letfonksiyonunu bir fonksiyonun en üstüne yerleştirerek var, bir bloğa yazma niyetinden daha açık olan bir fonksiyonun kapsamını alabilirsiniz. - tuhaf). Eğer letbir fonksiyona atarsanız “sözdizimi yerine sadece farkı işaret eden konumdur” diye uyarıyor , ama bence bu iyi bir şey.
var. varSaklamak için sunduğu örnekler haklı görünmektedir - ve ciddi kodlama hatalarına dayanmaktadır . Bir hatayla karşılaşmak ve bu hataları düzeltmek zorunda kalmak, ondan kurtulmak için dil işlevlerini kullanmaktan çok daha iyidir! Sırada ne var, çökmeleri önlemek için her şeyi bir deneme / yakalamaya koymanız önerilir mi? Bu bağlantının gerisi iyi ama o kısımla aynı fikirde değilim.
varbu değişkenin tüm işlevi kapsaması amaçlanan bilinçli bir gösterge olarak kullanılmasının yararlı bir "kendi kendini belgeleyen" kural olabileceği anlaşılıyor. .