JavaScript Soruları

Sanch

Hectopat
Katılım
3 Temmuz 2019
Mesajlar
1.539
Çözümler
16
Daha fazla  
Cinsiyet
Erkek
1- Değişken tanımlarken neden "var" kullanıyoruz?
Mesela "a=10" demek ile "var a=10" demek aynı şey değil mi? "let" ve "const" gibi kısımlara girmeyelim, orası ayrı.

2- "i++" ve "++i" farklı kullanımı
"i" diye bir değişkenimiz olsun, "++i" ile "i++" nerelerde farkı kullanılıyor?

Aklıma geldikçe ekleyeceğim.
 
1. Soru "var" şunun içindir diyemem fakat C# biliyorsanız oradaki "object" yerine geçiyor kısacası istediğimiz tüm değerleri atayabiliyor(Bknz:string, int, bool).

2. Aslında bu daha çok döngülerde dikkat edilir, peki farkı nedir? Şu şekilde "i++" ilk önce 1 artırır sonra "i" değerini döndürür, fakat "++i" ilk önce değeri döndürür sonrasında "i" değerini artırır.
 
Grasshopper uygulamasında zevkine biraz bakmıştım. Orada let'i fonksiyonlarda kullanırken var'ı genelde kullanıyordu. Öyle yapılmasını tavsiye ediyordu.
Direkt var ya da let kullanmadan yapıldığını görmedim. Ama Repl.it'te yapınca oldu.
İnternette ise var ile tanımlamazsanız global olur, kullanmamanız tavsiye edilmez demişler.

++i i'nin bellekteki yerine gidip bir artırır. i++ ise önce geçici bir değişken oluşturur. Bu değişken için bellekte yer alır ve oraya i'nin değerini kopyalar. Sonra i'nin değerini artırır. Sonra geçici değişkenini sizin i++ yazdığınız yere döndürür. Fonksiyondan değer döndürmesi gibi düşünün. Daha fazla işlem yapar. Döngülerde amaç sadece artırmak olduğu için ++i kullanmanızı tavsiye ederim.
 
@bitwise Ama direk tanımlayınca da "var" olarak gelmiyor mu?

Daha iyi anladim sorunu simdi, zaten i = 8 yazarsan "var" oluyorsa neden var yaziyoruz diyorsun.
Explicit vs Implicit kavrami bu, yazmak zorunda degilsin ama yazarsan daha anlasilir kod yazmis olursun.

What's the Difference Between Implicit vs. Explicit Programming? - Rollout Blog

Programlamada her zaman explicit olman tercih edilir bug-free kalmak ve daha kolay anlasilmak icin.

Ayrica yarin bir gun JS motoru "Bundan sonra i=8; olarak yapilan tanimlamalari "var" olarak degil "let" olarak kabul edecegim" derse kodun calismaz. Cunku implicit davrandin.

Ben sirf bu sebeple dynamic-typed dilleri sevmiyorum.
 
@bitwise Anladım efendim, teşekkür ederim.
++i i'nin bellekteki yerine gidip bir artırır. i++ ise önce geçici bir değişken oluşturur. Bu değişken için bellekte yer alır ve oraya i'nin değerini kopyalar. Sonra i'nin değerini artırır. Sonra geçici değişkenini sizin i++ yazdığınız yere döndürür. Fonksiyondan değer döndürmesi gibi düşünün. Daha fazla işlem yapar. Döngülerde amaç sadece artırmak olduğu için ++i kullanmanızı tavsiye ederim.
Bunu öğrenmem iyi oldu, teşekkür ederim efendim.
 
Bir de soyle bir sey ekleyeyim konuya, degisken tanimlarken hangi dil olursa olsan olabilecek en kucuk scope icin ve olabilecek en defansif access modifier ile ( public vs private ) yapman gerek.

Defensive programming - Wikipedia

Yani "let" kullanabilecegin yerde "var" kullanmak anti-pattern.
Global variable yerine minimal scope kullanmak cok daha iyi.
 

Geri
Yukarı