JavaScript sabitlerinizden ne zaman büyük harf yazmalısınız?

Çoğu JavaScript stil kılavuzu, sabit adların büyük harfle yazılmasını önerir. Şahsen, bu sözleşmenin olması gerektiğini düşündüğüm yerde kullanıldığını nadiren görüyorum. Bunun nedeni sabit tanımımın biraz yanlış olmasıydı. Biraz kazmaya ve bu kongreye biraz daha aşina olmaya karar verdim.

"Sabit" terimini nasıl tanımlarız?

Programlamada sabit, değişmeyen bir şeydir.

Normal çalışma sırasında program tarafından değiştirilemeyen bir değerdir.

Peki, JavaScript bize değiştirilemeyen bir değeri bildirmek için bir yol sunuyor mu? Bunu cevaplamadan önce, bu sözleşmenin kökenlerine bakalım.

Büyük harf kullanımı sözleşmesinin C kökleri vardır

C derlenmiş bir dildir. Bu, başka bir programın çalışmadan önce tüm kodunuzu makine koduna dönüştürdüğü anlamına gelir.

JavaScript ise yorumlanmış bir dildir. Bir yorumlayıcı, kodunuzu çalışırken satır satır okur.

Derleme ve yorumlama arasındaki fark, C'de sabit değerleri nasıl beyan ettiğimizde rol oynar.

C'de, şöyle bir değişken tanımlayabilirim:

int hoursInDay = 24;

Veya bunun gibi bir sabit:

#define hoursInDay 24

İkinci örneğe sembolik sabit denir . Sembolik sabitler bir dizi karakter, bir sayısal sabit veya bir dize olabilir. Bunlara ilkel değerler de denir. JavaScript'teki ilkel değerler dizeler, sayılar, booleler, boş, tanımsız, sembol (sembolik sabitlerle karıştırılmamalıdır) ve büyük int'dir.

Şimdi, derlemeyi tekrar gözden geçirelim.

Derlemeden önce bir ön derleme aşaması vardır. Burada ön derleyici, sembolik sabitlerin tüm örneklerini ilgili değerle değiştirir. Derleyici, programcının yazdığını asla bilmez hoursInDay. Yalnızca numarayı görür 24.

Büyük harf kullanımı, programcının bu gerçekten sabit değerleri görmesine yardımcı olur.

#define HOURS_IN_DAY 24

JavaScript sabitleri sembolik sabitlerden farklıdır

ES6'dan önce, sabit kalmasını istediğiniz değerleri bile değişkenlerde sakladık.

Büyük harf kullanımı, sabit kalmasını istediğimiz değerleri görmemize yardımcı oldu.

var HOURS_IN_DAY = 24; var hoursRemaining = currentHour - HOURS_IN_DAY; var MY_NAME = 'Brandon'; MY_NAME = ... // oops don't want to do this.

ES6 const , en saf anlamıyla "sabit" olmayan beyanı tanıttı .

ES6, terimleri constve letfarklı niyetlerle değişkenler yaratmanın yolları olarak ekledi .

Bu iki terimle, ikimizden birinin:

  1. Hangi değişkenlerin aynı kalması amaçlandığını açıkça görebildiğimiz için herhangi bir şeyi büyük harfle yazmamıza gerek yok veya
  2. ile beyan ettiğimiz her şeyi büyük harfle yazmalıyız const.

Tanım gereği, constbir değere salt okunur bir referans olan bir sabit oluşturur. Bu, sahip olduğu değerin değişmez olduğu anlamına gelmez. Yalnızca değişken tanımlayıcısının yeniden atanamayacağını söylüyor.

Başka bir deyişle, bazı constreferanslar değişebilir.

const firstPerson = { favoriteNumber: 10, }; const secondPerson = firstPerson; console.log(secondPerson.favoriteNumber); //10 firstPerson.favoriteNumber +=1; console.log(secondPerson.favoriteNumber); //11

Yukarıdaki örnek, bildirimin constdeğişkenin değişmez olduğunu garanti etmediğini göstermektedir .

constsadece değişken adını yeniden atamayı denememizi engeller. Object özelliğinin değişmesini durdurmaz. Unutmayın: nesneler referansla aktarılır.

// "TypeError: Assignment to constant variable."secondPerson = 'something else'; const secondPerson = 'Me' secondPerson = 'something else';

Bu nedenle, JavaScript için, yalnızca bir constbeyan aramanın ötesine geçmeliyiz . Bir değişkenin sabit olup olmadığını belirlemek için iki soru sormamız gerekir:

  1. Değişkenin değeri ilkel midir?
  2. Değişken adını programımız boyunca aynı değeri göstermeye devam edecek miyiz?

Cevap her ikisine de evet ise, değişkeni ile ilan etmeliyiz constve adı büyük harfle yazabiliriz.

"Mayıs" dediğime dikkat edin. Bu sözleşmenin ruhu, gerçek sabitleri olan farklı dillerden gelir. JavaScript yapmaz. En azından en saf anlamda. Bu kongreyi beklediğinizden daha az görmenizin nedeni bu olabilir. Airbnb'nin stil kılavuzunda burayı ele alan harika bir bölümü var.

Ana fikir , JavaScript'te bir sabiti tanımlamanın programcının niyetlerini içermesi gerektiğinin farkına varmaktır.

Ek olarak, bir dildeki her kongre farklı bir dilde anlam ifade etmez. Son olarak, IDE'lerin bugün sahip oldukları yeteneklere sahip olmasından çok önce birçok konvansiyonun kullanıldığını hayal edebiliyorum. IDE'min bana yanıldığımı söylemekten zevk aldığına ikna oldum. Bu çok oluyor.

Okuduğunuz için teşekkürler!

woz

Twitter'da beni takip edin.

Notlar

  • PIBu örneklerin hiçbirinde neden kullanmadığımı merak edebilirsiniz . Kısaltmalar - özellikle iki harfli kısaltmalar - ya her zaman büyük harfle yazılma ya da geleneksel olarak her zaman küçük harf olma eğilimindedir.