Değişkenler, bir değere temsili ad atayan bir veri yapısıdır. Bunlar herhangi bir türde veriyi içerebilir.
Değişken adlarına tanımlayıcı adı verilir. Geçerli bir tanımlayıcı takip edilmelidir. şu kuralları kabul edin:
- Tanımlayıcılar; Unicode harfleri, dolar işaretleri ($), alt çizgi içerebilir karakterler (_), rakamlar (0-9) ve hatta bazı Unicode karakterleri içerebilir.
- Ayrıştırıcı, şunları yapmak için boşluk kullandığından tanımlayıcılar boşluk içeremez:
giriş öğelerini ayrı tutun. Örneğin, bir değişkeni
myVariable
yerinemy Variable
ise ayrıştırıcı iki tanımlayıcı görür:my
veVariable
belirtilerini içerir ve bir söz dizimi hatası ("beklenmeyen jeton: tanımlayıcı"). Tanımlayıcılar bir harf, alt çizgi (
_
) veya dolar işaretiyle ($
) başlamalıdır. Sayılar ile karışıklık olmasını önlemek için, sayılarla başlayamazlar. tanımlayıcılar:let 1a = true; > Uncaught SyntaxError: Invalid or unexpected token
JavaScript, bir tanımlayıcının başında sayılara izin verdiyse olarak kullanılan sayılar arasında çakışmalara neden olan, yalnızca sayılardan oluşan tanımlayıcılar tanımlayıcılar olarak kullanılan sayılar ve sayılar:
let 10 = 20 10 + 5 > ?
"Ayrılmış kelimeler" zaten söz dizimsel olarak anlamlı olan tanımlayıcılar tanımlayıcı olarak kullanılamaz.
Tanımlayıcılar özel karakterler (
! . , / \ + - * =
) içeremez.
Aşağıdakiler, tanımlayıcı oluşturmayla ilgili katı kurallar değildir ancak sektöre yönelik en iyi uygulamalarını ele aldık. Özel projenin farklı standartları var. Tutarlılık için bunları takip edin.
JavaScript'in yerleşik yöntem ve özellikleriyle belirlenen örneğe göre deve büyük harf ("kamelCase" olarak da bilinir), birden fazla kelimeden oluşur. Deve örtüsü, bir proje yöneticisinin iyileşme için ilk harfi hariç her kelimenin ilk harfinin büyük yazılması okunabilirliği artırmaktır.
let camelCasedIdentifier = true;
Bazı projelerde bağlama ve projenin yapısına göre farklı adlandırma kuralları kullanılır temsil eder. Örneğin, bir sınıfın ilk harfi genelde büyük harfle yazılır, bu nedenle birden çok kelimeden oluşan sınıf adları genellikle deve kelimesinin farklı bir varyantını kullanır genellikle "büyük harf kullanımı" olarak adlandırılır veya Pascal büyük/küçük harf.
class MyClass {
}
Tanımlayıcılar içerdikleri verilerin yapısını kısa ve öz bir şekilde tanımlamalıdır (örneğin,
örneğin, currentMonthDays
, theNumberOfDaysInTheCurrentMonth
ifadesinden daha iyi bir addır)
ve bir bakışta net olarak okuyun (originalValue
, val
değerinden daha iyidir). İlgili içeriği oluşturmak için kullanılan
Bu modül boyunca kullanılan myVariable
tanımlayıcılar şu bağlamda çalışır:
ancak bunların üretim kodunda pek işe yaramayacağı için
içerdikleri veriler hakkında hiçbir bilgi vermezler.
Tanımlayıcılar içerdikleri veriler hakkında çok ayrıntı vermemelidir çünkü
değerleri, komut dosyalarının bu veriler üzerinde nasıl hareket ettiğine veya
daha iyi kararlar vermenize yardımcı olabilir. Örneğin, başlangıçta
miles
tanımlayıcısının daha sonra kilometre cinsinden bir değerle değiştirilmesi
ve bakımcıların söz konusu değişkene yapılan referansları değiştirerek
ve ileride karışıklık olmasını önler. Bunu önlemek için tanımlayıcınız olarak distance
kullanın
.
JavaScript, kullanılan tanımlayıcılara özel bir ayrıcalık veya anlam
alt çizgi karakterleriyle (_
) başlar, ancak genellikle bu alt çizgi karakterlerini göstermek için
değişken, yöntem veya özellik "gizli" ise yani sadece
kullanılan içeriğin bağlamına uygun şekilde
söz konusu bağlam dışında erişilen veya değiştirilen) Bu, tüm dünyada benimsenen
JavaScript'in eklenmesinden önce ve diğer programlama dillerinden
özel mülkler.
Değişken bildirimi
JavaScript'in bir tanımlayıcıdan, bir işlemden ve bir işlemden
adı verilen kullanabilirsiniz. Bir değişken; let
, const
,
veya var
anahtar kelime.
let myVariable;
İstediğiniz zaman değiştirilebilecek bir değişkeni bildirmek için let
veya var
kullanın. Bu
anahtar kelimeler, JavaScript yorumlayıcısına bir karakter dizesinin
veya bir değer içerebilecek tanımlayıcıyı belirtir.
Modern bir kod tabanında çalışırken var
yerine let
politikasını kullanın. var
hâlâ çalışıyor
Ancak, kötü amaçlı yazılım sürümü tasarımında tanımlanmış mantıksız bazı
JavaScript’in en eski sürümlerini çalıştırıyordu ve daha sonra
korumayı sağlar. let
, bazı sorunları gidermek için ES6'ya eklendi
var
.
Beyan edilen değişken, değişkene bir değer atanarak başlatılır. Tekliflerinizi otomatikleştirmek ve optimize etmek için
bir değişkene değer atamak veya yeniden atamak için tek eşittir işareti (=
) kullanın. Yapabilecekleriniz
şunu beyan eden aynı ifadenin bir parçası
olarak:
let myVariable = 5;
myVariable + myVariable
> 10
Ayrıca bir değişkeni başlatmadan let
(veya var
) ile de bildirebilirsiniz
sabırsızlanıyorum. Bu durumda, değişkenin başlangıç değeriundefined
kod ona bir değer atar.
let myVariable;
myVariable;
> undefined
myVariable = 5;
myVariable + myVariable
> 10
undefined
değerine sahip bir değişken, tanımlanmamış bir değişkenden farklı
kimliği henüz bildirilmemiş olan kullanıcılar için geçerlidir. Sahibi olmadığınız bir değişkene referans verme
bir hataya neden olur.
myVariable
> Uncaught ReferenceError: myVariable is not defined
let myVariable;
myVariable
> undefined
Bir tanımlayıcının bir değerle ilişkilendirilmesine genellikle "bağlama" adı verilir.
let
, var
veya const
anahtar kelimelerini izleyen söz dizimine
"bağlama listesi", ve birden fazla virgülle ayrılmış değişken bildirimlerine izin verir.
(beklenen noktalı virgülle biter). Bu, aşağıdaki kod snippet'lerini
işlevsel olarak özdeş:
let firstVariable,
secondVariable,
thirdVariable;
let firstVariable;
let secondVariable;
let thirdVariable;
JavaScript kodu kullanıldığından, bir değişkenin değeri yeniden atanırken let
(veya var
) kullanılmaz
değişkenin mevcut olduğunu bilir:
let myVariable = true;
myVariable
> true
myVariable = false;
myVariable
> false
Değişkenlere mevcut değerlerine göre yeni değerler atayabilirsiniz:
let myVariable = 10;
myVariable
> 10
myVariable = myVariable * myVariable;
myVariable
> 100
Üretim ortamında let
kullanarak bir değişkeni yeniden bildirmeye çalışırsanız
Söz dizimi hatası alırsınız:
let myVariable = true;
let myVariable = false;
> Uncaught SyntaxError: redeclaration of let myVariable
Tarayıcılar geliştirici araçları
let
(ve class
) için yapılan yeniden bildirim işlemleri konusunda daha esnek davranır. Bu nedenle,
geliştirici konsolunuzda aynı hatayı görürsünüz.
var
, eski tarayıcı uyumluluğunu korumak için gereksiz yeniden bildirime izin verir.
hiçbir bağlamda hatasız olarak:
var myVariable = true;
var myVariable = false;
myVariable\
> false
const
Sabit olması gereken bir değişken türü olan sabit değeri tanımlamak için const
anahtar kelimesini kullanın.
hemen başlatılır ve değiştirilemez. Sabit değerler için tanımlayıcılar
let
(ve var
) kullanılarak tanımlanan değişkenlerle aynı kurallara uymalıdır:
const myConstant = true;
myConstant
> true
Bir sabit değeri hemen bir değer atamadan tanımlayamazsınız. Bunun nedeni,
sabit değerler oluşturulduktan sonra yeniden atanamaz. Bu nedenle,
değeri sonsuza kadar undefined
kalacaktı. Sürekli değeri belirtmeye çalışırsanız
başlatmazsanız bir söz dizimi hatası alırsınız:
const myConstant;
Uncaught SyntaxError: missing = in const declaration
const
ile tanımlanan bir değişkenin değerini değiştirmek istediğiniz şekilde
let
(veya var
) ile bildirilen wit değişkeninin değerini değiştirme, bir türe neden olur
hata:
const myConstant = true;
myConstant = false;
> Uncaught TypeError: invalid assignment to const 'myConstant'
Ancak bir sabit değer bir nesneyle ilişkilendirildiğinde, bu nesnenin özellikleri Nesne değiştirilebilir.
const constantObject = { "firstvalue" : true };
constantObject
> Object { firstvalue: true }
constantObject.secondvalue = false;
constantObject
> Object { firstvalue: true, secondvalue: false }
Nesne içeren sabit değerler değişebilir bir veri değerine referans verin. Sabit değerin kendisi değiştirilemez, ancak referans verilen Nesne değiştirilebilir, eklenebilir veya kaldırılabilir:
const constantObject = { "firstvalue" : true };
constantObject = false
> Uncaught TypeError: invalid assignment to const 'constantObject'
En iyi uygulama, bir değişkenin yeniden atanmasını beklemediğiniz durumlarda
değişkendir. const
kullanmak, geliştirme ekibinize veya bir aracın gelecekteki
ve kodunuzdaki varsayımları yıkmamak için bu değeri değiştirmemeye dikkat edin.
kullanım şekli hakkında bilgi verir. Örneğin, bir değişkenin
beklenen bir veri türüyle karşılaştırılarak
değerlendirilir.
Değişken kapsamı
Değişkenin kapsamı, komut dosyasında değişkenin kullanılabildiği bölümdür.
Değişkenlerin kapsamı dışında kalan değişkenler tanımlayıcı olarak değil, tanımlanamaz.
sanki bildirilmemiş gibi undefined
değeri içeriyor.
Bir değişkeni bildirmek için kullandığınız anahtar kelimeye ve tanımlamayı seçerseniz, ifadeleri engellemek için değişkenlerin kapsamını ayarlayabilirsiniz (kapsamı engelleme), bağımsız işlevler (işlev kapsamı) veya JavaScript uygulamasının tamamı (global kapsam).
Kapsam engelleme
let
veya const
kullanarak bildirdiğiniz tüm değişkenler
içeren blok ifadesini içeren
Yani değişkene yalnızca bu blok içinden erişilebilir. Şunları deniyoruz:
içeren bloğunun dışında blok kapsamlı bir değişkene erişmek aynı duruma neden olur
hatasını mevcut olmayan bir değişkene erişmeye çalışırken sorun:
{
let scopedVariable = true;
console.log( scopedVariable );
}
> true
scopedVariable
> ReferenceError: scopedVariable is not defined
JavaScript açısından bakıldığında, blok kapsamlı bir değişken mevcut değildir parçasının dışına çıkar. Örneğin, bir sabit değer ve ardından, bu bloğun dışında başka bir sabit değer bildirerek aynı tanımlayıcıya sahip olmalıdır:
{
const myConstant = false;
}
const myConstant = true;
scopedConstant;
> true
Beyan edilen bir değişken, üst bloğuna kadar genişleyemese de aynı alt öğe blokları için kullanılabilir:
{
let scopedVariable = true;
{
console.log( scopedVariable );
}
}
> true
Tanımlanan bir değişkenin değeri, bir alt blok içinden değiştirilebilir:
{
let scopedVariable = false;
{
scopedVariable = true;
}
console.log( scopedVariable );
}
> true
Yeni bir değişken, bir alt öğe içinde let
veya const
ile başlatılabilir
hatasız bir şekilde engelledikten sonra, bir değişken olarak aynı tanımlayıcıyı
üst blok:
{
let scopedVariable = false;
{
let scopedVariable = true;
}
console.log( scopedVariable );
}
> false
İşlev Kapsamı
var
kullanılarak tanımlanan değişkenler, en yakın kapsayıcı işlevine ayarlanır
(veya bir sınıf içindeki statik başlatma bloku).
function myFunction() {
var scopedVariable = true;
return scopedVariable;
}
scopedVariable;
> ReferenceError: scopedVariable is not defined
Bu durum, bir işlev çağrıldıktan sonra da devam eder. Her ne kadar değişken, işlev yürütülürken başlatılırsa, bu değişken hâlâ işlevin kapsamı dışında kullanılamaz:
function myFunction() {
var scopedVariable = true;
return scopedVariable;
}
scopedVariable;
> ReferenceError: scopedVariable is not defined
myFunction();
> true
scopedVariable;
> ReferenceError: scopedVariable is not defined
Global kapsam
Bir genel değişken, JavaScript uygulamasının tamamında kullanılabilir. içinde, sayfadaki herhangi bir komut dosyasına uygulayabilirsiniz.
Bu istenen bir varsayılan gibi görünse de, projenin herhangi bir parçasının bir uygulamaya erişmesinin ve değişiklik sürecinin, gereksiz ek yük, uygulamanın aynı tanımlayıcıya sahip başka yerlerdeki değişkenlerle çakışmaları. Bu, bir sayfanın oluşturulmasında kullanılan tüm JavaScript'ler için geçerlidir. ve kullanıcı analizleri gibi araçlar dahildir. Dolayısıyla, küresel kapsamı kirletmekten kaçınmaya yönelik en iyi uygulamaları inceleyin.
Üst işlev dışında var
kullanılarak ya da let
veya
Üst yapı bloğunun dışında olan const
, global:
var functionGlobal = true; // Global
let blockGlobal = true; // Global
{
console.log( blockGlobal );
console.log( functionGlobal );
}
> true
> true
(function() {
console.log( blockGlobal );
console.log( functionGlobal );
}());
> true
> true
Açıkça belirtmeden bir değişkene değer atamak (yani
hiçbir zaman var
, let
veya const
kullanılmadığında), bir değişkeni
bir işlev veya blok içinde başlatılsa bile global kapsam değişikliğine izin verilir. Değişken
bazen "ima edilen genel" olarak da adlandırılır.
function myFunction() {
globalVariable = "global";
return globalVariable
}
myFunction()\
> "global"
globalVariable\
> "global"
Değişken Kaldırma
Değişkenler ve işlev bildirimleri kapsamlarının en üstüne yer alır,
Diğer bir deyişle, JavaScript yorumlayıcısı herhangi bir zamanda bildirilen her türlü değişkeni
işaret eder ve onu kapanış satırının ilk satırına etkili bir şekilde taşır
kapsamını kontrol edin. Bu, bir değişkenin
var
öğesine, değişken bildirilmeden önce bir
hata:
hoistedVariable
> undefined
var hoistedVariable;
Başlatma işlemi değil, yalnızca değişken bildirimi barındırıldığından
var
, let
veya const
ile açıkça bildirilmemiş değişkenler
emin olun:
unhoistedVariable;
> Uncaught ReferenceError: unhoistedVariable is not defined
unhoistedVariable = true;
Daha önce belirtildiği gibi, bildirilen ancak başlatılmamış bir değişken
undefined
değerine atandı. Bu davranış kaldırılmış değişken için geçerlidir
yalnızca var
kullanılarak beyan edilenler için geçerlidir.
hoistedVariable
> undefined
var hoistedVariable = 2 + 2;
hoistedVariable\
> 4
Bu mantıksız davranış büyük ölçüde, Android'de verilen tasarım kararlarından JavaScript’in en eski sürümlerini içerir ve mevcut siteleri bozar.
let
ve const
bu sorunu çözmek için bir komut dosyası olduğunda
değişkeni oluşturulmadan önce erişilir:
{
hoistedVariable;
let hoistedVariable;
}
> Uncaught ReferenceError: can't access lexical declaration 'hoistedVariable' before initialization
Bu hata, "hoistedVariable tanımlanmadı" hatasından farklıdır. sana hata veriyor
ve bildirilmemiş bir değişkene erişmeye çalışırken karşılaşabileceğiniz durumlar. JavaScript
değişkenin geri çekildiğinde, değişkenin
açıklayacağım. Ancak, bu değişkeni
undefined
değerine ayarlanırsa çevirmen hata verir.
let
veya const
(ya da class
) ile tanımlanan değişkenlerin
"geçici ölü bölge" ("TDZ"), bitişik bloğun başlangıcından
kodda değişkenin bildirildiği noktaya uygulanır.
Zamansal ölü bölge, let
davranışının var
ile kıyaslandığında daha sezgisel olmasını sağlar.
yazar. const
tasarımı için de kritik önem taşır. Sabit değerler
sabit bir değer en üst kısmına tırmandırılıyordu ve üstü kapalı bir değer taşıyordu.
undefined
örneği daha sonra anlamlı bir değerle başlatılamadı.
Öğrendiklerinizi sınayın
Bir tanımlayıcıyı ne tür karakterlerle başlatabilirsiniz?
Değeri aynı olan bir değişkeni tanımlamak için tercih edilen yöntem hangisidir? değiştirilebilir mi?