2016-03-30 10 views
2

Eğer bu bir değişmez nesne olsaydı, o zaman bir const olarak ilan etmekte hiç şüphem olmazdı. Ancak bu durumda, nesne daha sonra kodda değiştirilirken, bir nesneye yalnızca bir const başvurudır.ES2015'te bir const olarak bir düzenlenebilir dizi/nesne bildirmeli miyim?

const styles = {}; 
... 
styles.width = rect.width + 'px'; 

Korkarım ki bu kodları okuyan geliştiriciler için kafa karıştırıcı olacaktır. let gibi bir şey, mutasyona uğrayan nesneler için daha uygundur.

+0

Sadece sorunuza cevap verdiniz sanırım? – llamerr

+1

Bu amaç için const'i tercih ederim çünkü değişken her zaman aynı nesneye başvurur. Ama eğer senin kodunsa, ne istersen onu kullan. Eğer bir takımda çalışıyorsanız ve endişeleniyorsanız endişelenirseniz, takım için bir kodlama standartları belgesi yazınız: problem çözüldü. – nnnnnn

cevap

2

Muhtemelen fikir temelli olduğu için, nihai bir yanıt alacağınız bir soru. kafa karıştırıcı const ilk etapta nasıl ortaya çıktığını tarihi geçmişinin Biraz anlamaya yardımcı olabilir

: (belki de daha iyi ve)

Allan Wirfs-Brock, the former editor of the EcmaScript spec, himself said:

biraz farklı olarak

evren, ECMAScript const Bildiri, let olarak adlandırılacak ve bir SSA bağlaması getirecektir.

let/const ciddiye araştırdı ES4 önerileri ve Moz JS1.7

TC39 arta taşımak asla edildi alternatifleri

adlandırma: Bu durumda, he responded değildi neden

Ve sordu

Yani const bir yanlış anlamanın biraz olduğunu söyleyebiliriz, çünkü aşina olmayanlar bunu yapmasını beklemiyor olabilir. const yana

olsa yapar ve neredeyse kesinlikle ben hala const ile nesneleri tanımlamak istiyorum , değiştirmeye gitmiyor şekilde çalışır.

Bu, daha iyi anlaşılması için const yolunu bilmeyen insanlara yardımcı olabilir.

Belki çizgisinde bir nesneyle const ilk geçtiği bir yorum eklemek için yardımcı olabilir:

// Important: 'const' only ensures that 'styles' always references the same object, 
// it does not render it immutable 
const styles = {}; 

Görüşler olsa değişebilir.

+0

Görüşlere dayalı (konu dışı) soruları yanıtlayarak teşvik etmemelisiniz. –

+0

Benim hatam, ne önerirsiniz? Soruyu kapatmak mı? – nils

İlgili konular