Bazen belirli bir nesnenin özelliğinin var olup olmadığını kontrol etmek yararlıdır. Nesnelerin .hasOwnProperty (propname) yöntemini, o nesnenin verilen özellik adına sahip olup olmadığını belirlemek için kullanabiliriz. .hasOwnProperty (), özelliklerin bulunup bulunmama durumuna göre true veya false döndürür.
Fonksiyonlar İle Yeniden Kullanılabilir Kodlar Yazma
JavaScript’te, foksiyonlar ilekodumuzu yeniden kullanılabilir parçalara ayırabiliriz.
function functionName() {
console.log("Hello World");
}
Bu işlevi, adını ve ardından parantezleri kullanarak şu şekilde çağırabilir: functionName (); İşlev her çağrıldığında, geliştirici konsolunda “Merhaba Dünya” mesajını yazdıracaktır. Küme parantezleri arasındaki tüm kod, işlev her çağrıldığında çalıştırılacaktır.
UYGULAMA:
Create a function called functionWithArgs that accepts two arguments and outputs their sum to the dev console.
Call the function with two numbers as arguments.
KODUMUZ:
function functionWithArgs(val1, val2){
console.log(val1 + val2);
}
functionWithArgs(3, 5);
Fonksiyonlarda Yerel ve Global Değişkenler
Aynı ada sahip hem yerel hem de global değişkenlere sahip olmak mümkündür. Bunu yaptığınızda, yerel değişken global değişkene göre öncelik kazanır.
var someVar = "Hat";
function myFun() {
var someVar = "Head";
return someVar;
}
console.log(someVar);
console.log(myFun()); // console.log(myFun();); olmazzzz dikkat!!|| ÇIKTI:Hat
Head
Katı Eşitlik Operatörü (Strict Equality Operator)
Katı eşitlik (===), eşitlik operatörünün (==) karşılığıdır. Ancak, her iki değeri de ortak bir türle karşılaştırarak dönüştürmeye çalışan eşitlik operatöründen farklı olarak, katı eşitlik operatörü bir tür dönüştürme gerçekleştirmez. Karşılaştırılan değerlerin farklı türleri varsa, eşit olmadıkları kabul edilir ve katı eşitlik operatörü yanlış döndürür.
3 === 3 // true
3 === '3' // false
Yukarıda ikinci örnekte, 3 bir number türüdür, ‘3’ bir string türüdür.
Katı eşitsizlik operatörü (! ==) (Strict Inequality Operator)
Katı eşitsizlik operatörü (! ==), katı eşitlik operatörünün mantıksal zıttıdır. “Kesinlikle Eşit Değildir” anlamına gelir ve katı eşitliğin doğru olduğu ve tersinin doğru olduğu durumlarda yanlış döndürür. Katı eşitsizlik, veri türlerini dönüştürmez. Bu operatör verinin değeriyle birlikte türünü de karşılaştırır.
Aralarından seçim yapabileceğiniz pek çok seçeneğiniz varsa, bir switch deyimi kullanabiliriz. Bir switch deyimi bir değeri test eder ve çeşitli olası değerleri tanımlayan birçok case deyimine sahip olabilir. İfadeler, ilk eşleşen durum değerinden bir kesinti ile karşılaşılıncaya kadar yürütülür.
DEfault
Bir switch deyiminde, tüm olası değerleri case deyimleri olarak belirtemeyebilirsiniz. Bunun yerine, eşleşen bir vaka ifadesi bulunmazsa yürütülecek varsayılan ifadeyi ekleyebilirsiniz. Bir if / else zincirindeki son else ifadesi gibi düşünün. Bir varsayılan ifade, son durum olmalıdır.
function switchOfStuff(val) {
var answer = "";
switch(val){
case "a":
answer = "apple";
break;
case "b":
answer = "bird";
break;
case "c":
answer = "cat";
break;
default:
answer = "stuff";
break;
}
return answer;
}
Fonksiyonlardan Boolean Değerlerini Döndürme
Eşitlik Operatörü ile Karşılaştırma’dan tüm karşılaştırma işleçlerinin bir mantıksal doğru veya yanlış değeri döndürdüğünü hatırlayabilirsiniz. Bazen insanlar karşılaştırma yapmak için şöyle bir if / else ifadesi kullanırlar ancak bunu yapmanın daha iyi bir yolu var. === true veya false döndürdüğünden, karşılaştırmanın sonucunu döndürebiliriz
function isEqual(a,b) {
if (a === b) {
return true;
} else {
return false;
}
}
YERİNE:
function isEqual(a,b) {
return a === b;
}
Fonksiyonlarda return Kalıbı
Bir dönüş ifadesine ulaşıldığında, mevcut fonksiyonun yürütülmesi durur ve kontrol, çağıran konuma geri döner.
function myFun() {
console.log("Merhaba");
return "Bünya";
console.log("byebye")
}
myFun();
Yukarıdaki, konsola “Merhaba” çıktısı verir, “Dünya” değerini döndürür, ancak “byebye” hiçbir zaman çıktılanmaz, çünkü işlev dönüş deyiminde çıkar.
UYGULAMA:
Modify the function abTest so that if a or b are less than 0 the function will immediately exit with a value of undefined.
function abTest(a, b) {
// Only change code below this line
// Only change code above this line
return Math.round(Math.pow(Math.sqrt(a) + Math.sqrt(b), 2));
}
abTest(2,2);
kodumuz
function abTest(a, b) {
if(a < 0 || b < 0){
return undefined; // undefined bir anahtar kelime, string değil!!
}
return Math.round(Math.pow(Math.sqrt(a) + Math.sqrt(b), 2));
}
abTest(2,2);
Nesne Özelliklerine Erişme
Bir nesnenin özelliklerine erişmenin iki yolu vardır: nokta notasyonu (.) Ve bir diziye benzer köşeli parantez gösterimi ([]).
1)
var myObj = {
prop1: "val1",
prop2: "val2"
};
var prop1val = myObj.prop1; // val1
var prop2val = myObj.prop2; // val2
“Do the difficult things while they are easy and do the great things while they are small. A journey of a thousand miles must begin with a single step.”
P.s.5 adet veri tip, 3 adet Object tipi bulunan javaScript dilinde veri tiplerini Number, String, Boolean, Undefined, ve Null (bu da bir object’dir). Object tipini ise fonksiyon, dizi, nesne (object) gibi referanslar oluşturmaktadır.
Fonksiyonların Tanımlanması
function anahtar kelimesinden sonra,
Fonksiyonun adı yazılır
Fonksiyonun aldığı parametreler (parantezler ile çevrili ve virgüller ile birbirinden ayrılmış olmalıdırlar).
Çalıştırılacak JavaScript ifadeleri (süslü parantezler ile çevrilmelidir).
function topla(sayi1, sayi2) {
var toplam = sayi1 + sayi2;
return toplam;
}
Eğer bir nesneyi (Array veya bir kullanıcı tanımlı nesne gibi ilkel olmayan değer) fonksiyona parametre olarak geçerseniz, nesne fonksiyon içerisinde kopyalanmadığı için nesne üzerinde yapılan değişiklikler fonksiyon dışında da korunur. Aşağıdaki örneği inceleyelim:
function arabamıDeğiştir(araba) {
araba.markası = "Toyota";
}
var arabam = {markası: "Honda", modeli: "Accord", yılı: 1998};
var x, y;
x = arabam.markası ; // "Honda" değerini getirir
arabamıDeğiştir(arabam);
y = arabam.markası; // "Toyota" değeri döndürülür
// (markası özelliği fonksiyon tarafından değiştirilmiştir)
Fonksiyonları şu iki şekilde çağırabiliriz:
1)
<script>
Goster();
function Goster(){
window.alert("2021 süperrr geçsin! Tam 30 dk sonra 1 Ocak 2021."); // saat: 23.30 tarih 31.12.2020
}fonksiyonu çağ
</script>
2)
<body>
<div id = "result"></div>
<button type = "button" onClick ="Hesapla();">Hesapla</button> // fonksiyonu çağırırken "Hesapla" değil de "Hesapla();" yazdık!
<script>
function Hesapla(sayi1, sayi2, sayi3){
var x, y, z;
x = 2;
y = 3;
z = (x + y) * 4;
document.getElementById('result').innerHTML = "Sonuç:" + z;
}
</script>
</body>
Nesne (Object) Kullanımı
Nesne içindeki özelliklerden biri metot içinde kullanılacaksa bu özellik this anahtar sözcüğü ile kullanılmalıdır. (this.saatUcreti)
Type Conversion (tür dönüşümü)’ın bir alt formu olan Typecast konusu anladığım kadarıyla; basit, temel ve bir o kadar da önemli bir konu. Kodlamaya başladığım ilk zamanlarda öğrenmiş olmama rağmen ve hatta şu kısa süreli blog serüvenimde bile bununla ilgili bir örnek yapmış olmama rağmen, yaptığım matematik işlemlerinde bu konuyla ilgili detaylar yüzünden sonuca ulaşamadığımı fark ettiğim bir konu olduğu için tür dönüşümleri için ayrı bir başlık açmak istedim.
Veri türeleri arası dönüşüm, bir değişkenin değişik türdeki hâlinin başka bir değişkene atanmasıdır. Typecast (type casting) de denir. İki formu vardır.
Typecast
Bilinçsiz Dönüşüm (Implicit Type Conversion): Düşük kapasiteli bir değişken, sabit ya da değişken ve sabitlerden oluşan matematiksel ifadenin daha yüksek kapasiteli bir değişkene atanması. Özel bir kod gerekmez
Bilinçli Dönüşüm (Explicit Type Conversion): Genellikle derleyicinin izin vermediği durumlarda kullanılır. Bilinçli tür dönüşümüyle küçük türün büyük türe dönüştürülmesi gereksizdir, bilinçsiz tür dönüşümü bu işi yapar. Dönüşümü yapılan değişkenin tuttuğu değer, dönüştürülecek türün kapasitesinden büyükse veri kaybı gerçekleşebilir.
Bilinçsiz Dönüşüm (Implicit Type Conversion)
Bilinçli Dönüşüm (Explicit Type Conversion)
object Türüyle İlgili Kurallar
object türündeki bir değişkene başka herhangi bir türdeki değişken ya da sabit (string dışında) + işaretiyle eklenemez.
object türündeki bir değişkene herhangi bir türdeki değişken ya da sabit atanabilir (bilinçsiz tür dönüşümü). object türündeki bir değişkeni başka bir türe çevirmek için tür dönüştürme işlemi kullanılır. Dönüştürülen türlerin uyumlu olması gerekir.
Aynı satırda çifte dönüşüm yapılamaz.
string Türüyle İlgili Dönüşümler
x.ToString(): x değişken ya da sabitini stringe çevirip tutar.
string türüyle ilgili bilinmesi gerekenler:
Methods (System.Convert sınıfı)
Tür dönüşümü için metotlar System isim uzayında Convert sınıfındadır. Hemen hemen her tür her türe dönüştürülebilir. Değişken türlerinin CTS (Common Type System) karşılıkları bilinmelidir.
Normalde, alan ve çevre hesabı yapabilen metodları, main metodu ile aynı sınıf içine yazabilirdik fakat bu kodda başka bir sınıf altında yazılan kodun, main içerisinde objesini nasıl oluşturup alan ve çevre hesabını yaptırdığımızı göreceğiz. Aynı kemik kod üzerinde 2 farklı örnek bulunuyor. Bu kodlar birbiriyle bağımsızdır. Birisi dik üçgenler üzerine, diğeri dikdörtgen üzerine yazılmıştır.
Kodumuz
1-Dik Üçgen Sınıfı
2-Dikdörtgen Sınıfı
Kodun Çıktısı
1-Dik Üçgen Sınıfının Çıktısı
2-Dikdörtgen Sınıfının Çıktısı
2 haftadır ara ara düşünüp kavrayamadığım, yazamadığım bir koddu. Ağlayacağım.