Javascript

Anlam Ayrımı Bulunmuyor.

2016 yılında @biliyon tarafından açılan bu başlık 8 entry ile zenginleşti ve 403 defa ziyaret edildi.

Fotoğraflar

Hepsini göster
1 dakikada okunabilir.

İnternet tarayıcı yazılımların çalıştırabildiği, kullanıcı hareketlerine anlık tepkiler veren web sayfaları * kodlamak için kullanılan bir betik programlama dilidir. Yazım biçimi c tabanlı dillere benzer.

javascript olay güdümlü, asenkron bir dildir. Bu özellikleri sayesinde bir çok alanda tercih edilir olmuştur.


Piyasaya çıktığında yukarıdaki amaçlarla kullanılıyor olsa da Google'ın, chromium projesi kapsamında açık kaynaklı olarak geliştirdiği v8 javascript motoru * sahneye çıkınca javascript, piyasa oyuncusu olmayı başardı.

Şuan sektörde v8 ve javascript ikilisini kullanan, Node.js ve MongoDB gibi büyük projelerin yanında daha bir çok irili ufaklı projede javascript tercih ediliyor.
Klasik javascript her ne kadar "her şey bir nesne" yaklaşımına sahip olsa da aslında nesne tabanlı programlamanın gereklerinden olan çok biçimlilik, kalıtım gibi özelliklerden çoğuna sahip değildi. ECMAScript standartlarını izleyen bir dil olan javascript artık yeni sürümleriyle birlikte bu noksanlarından da kurtulmakta, tam teşekküllü bir dil olma yolunda hızla ilerlemektedir.
1 dakikada okunabilir.
Infinity adında bir sabit bulundurur.

Uygulamanız içinde sonsuza giden bir sayısal değeriniz varsa bu sabitle temsil edebiliyorsunuz. En güzel örneği stream edilen ses kaynaklarıdır. Bildiğimiz internet radyosu işte. Bu kaynakları bir Audio nesnesine verip çalacak olursanız ilgili audio nesnesinin duration değeri Infinite sabitine eşit olacaktır. Yani radyolar teorik olarak sonsuza kadar çalabilir, bir uzunluğu olmak zorunda değil.

Sonsuz deyince miktar bakımından hatırı sayılır bir çokluk aklımıza gelir ancak matematik derslerinden hatırlarsanız eksi sonsuz denen bir kavram da vardır. Bunu karşılamak için de -Infinity yazarak eksi sonsuza giden şeyleri temsil edebiliriz.

#programlama #javascript
1 dakikada okunabilir.
Infinity + Infinity > 1 // true Infinity - Infinity < 1 // false
değer üretir. İkincisi hatalı çalışıyor gibi görünür ama doğrudur çünkü artı sonsuzdan sonsuzu * çıkartırsan mantıken ikisi birbirini götürür sıfırlar ve geriye ne kalır o da belli değildir anca felsefe açıklar felsefenin de tam olarak bir şeye cevap ürettiğini hiç görmedim anca goy goy kafa ütüle. Yılan oyunu yazayım diyen sivilceli bir garibanken filozof olup çıkıverirsin. Zaten javascript de bu işlem için false der geçer. yani "ne biliyim ben amk false işte, kurcalama" manasında.

ama;
-Infinity - Infinity < 1 // true
değerini verir. Eksi sonsuzdan sonsuzluğu çıkarırsan yine eksi sonsuz değer elde edersin dolayısıyla bunun rahatlıkla 1'den küçük olduğunu iddia edebiliriz.

#programlama #javascript #infinity
2 dakikada okunabilir.
Infinity sabiti 1e309 sayısı kadardır. Yani 1 ve yanında 309 tane sıfır olan sayı. Sonuç olarak sonsuzluk o kadar da sonsuz değildir ama javascript evreni içinde * bu sayı ve sonrası javascript için değersizdir dolayısıyla js buna kısaca Infinity der geçer. Zaten o kadar büyük sayılarla çalışıp da hayatın sırrını mı çözeceksiniz? Hadi bu kabiliyetiniz var bunu javascriptle mi yapacaksınız anlamında bir tanımlamadır. Yani js çapını çevresini bilen bir dildir. evet.

edit

Peki örtmenim bu günlük hayatta bir işimize yarayacak mı bari diyenlerdenseniz cevap evet. Infinity sabitini export edemeyeceğiniz durumlarda işe yarar bir bilgidir. Mesela bir dosyaya JSON çıktı almanız gerekebilir ve bu verinin içinde bir yerde de Infinity bir değer olabilir. Javascript içinde yerleşik bulunan JSON.stringify dönüştürücü metodu, bu tür sabitleri işleyip de çıktıya dahil etmez. Null veya farklı değerlerle geçiştirir. Haliyle bilgi kaybına neden olur. Infinity yerine 1e308 sayısı ise JSON içinde saklanabilir. Bu sayıyı gördüğünüz yerde infinity dönüşümünü yapmak elbette yine size kalıyor ancak bilgi kaybetmektense tercih edilebilir bir yöntem. Ha bunlarla uğraşmak yerine kendinize bir stringify metodu da yazabilirsiniz ve sabittir, efendime söyleyeyim sınıflardır serialize ede ede, sıka sıka ilerleyen bir şey de yazabilirsiniz ve böyle konulara tasalanmak yerine keyfinize bakarsınız o da ayrı konu.
2 dakikada okunabilir.
NaN isimli bir sabite sahiptir. Ancak bu sabit kendisi de dahil hiç bir şey ile eşit veya denk değildir. Bu değeri herhangi bir şey ile karşılaştırmadan bir mantıksal sınama yordamına sokarsanız JavaScript otomatik olarak bunu gördüğü yere false koyup yoluna devam edecektir. Tek işe yarar bir şey sağladığı durum budur.

if<bkz type="short" space=""> ! parseInt( 'abc', 10 </bkz>) // sayı girilmediği için NaN değer döner // False olarak ele alınır, ! ile bunun tersi true elde edilir if match olur aşağıdaki satır çalışır console.log<bkz type="short" space="">'not a number'</bkz>

Buradaki mantık aslında basittir. NaN, not a number ifadesinin kısa yazılmış halidir. Yani kümesel düşünürsek sayılar hariç diğer her şeyi kapsayan geniş bir tür havuzunu temsil eder. Yani NaN bir function da olabilir, bir string de olabilir. Bunların hepsi olabileceği için sadece string de diyemeyiz sadece array de diyemeyiz çünkü hepsidir ama tek tek hiçbiridir.

Burada haklı olarak neden kendisine eşit olmadığını sorabilirsiniz. Kendisine de eşit değildir çünkü kendisi de bir türdür ve tek tek türlerle eşleşmez demiştik zaten. Bunun yerine NaN spesifik bir türü değil bir türler kümesini temsil ettiği için kendisiyle eşleşmez de diyebiliriz. Her iki türlü de kendisiyle eşleşmemesini mantıklı biçimde açıklamak mümkün.

JSON.Stringify bunu gördüğünde null olarak dönüştürür.
1 dakikada okunabilir.
Bu dilde her şey bir nesnedir ve Object Süperseti ile türetilmiştir. Diziler, metinsel ifadeler, sayılar ve fonksiyonlar hepsi nesnedir ve her nesnenin özellikleri vardır. Bunlara property denir. Yani bir fonksiyon tanımlayıp buna daha sonra bir property ekleyebilirsiniz. Bunlar diğer dillerde static variables olarak bilinen özelliğe denk düşer.

var foo = function <entry></entry><entry></entry> foo.bar = "bar";

Bu örnekte foo fonksiyonu artık bar adında bir özelliğe sahip. Ancak foo metodu new operatörü ile örneklenecek olursa elde edilecek nesnede bar özelliği bulunmaz. Çünkü JavaScript motoru nesne örneklerken miras alınacak özellikler için prototype özelliğine bakıp bunun altındaki özellikleri yeni nesne örneğine ekler. Böylece fonksiyonlara direkt eklenen özellikler static olarak kalmış olur. Bu alan ilgili fonksiyona özel ama her nesne içinde bulunması gerekmeyen genel amaçlı şeylerin taşınması için kullanışlı bir alandır.