JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 4

JavaScript mülakat soruları part-4 öne çıkan görsel

JavaScript mülakat soruları serisinin 4. bölümünden merhabalar. Aşamalı bir şekilde kolaydan zora doğru ilerlediğimiz serimiz devam ediyor. Eğer JavaScript mülakat soruları serisine baştan başlayıp aşamalı bir şekilde ilerlemek istiyorsanız part-1’e ve diğer partlara aşağıdan ulaşabilirsiniz:

En son 30. soruyu tamamlamıştık. Şimdi 31. sorudan devam edelim.


Soru 31

let myNum = 5;

console.log(myNum > 5 || myNum == 5);

myNum = -5;

console.log(myNum > 5 || myNum == 5);

myNum değişkeninin değerini 5 olarak belirledik. Ardından konsola || (veya) operatörü ile kıyaslama yaparak sonucu yazdırmaya çalıştık. || operatörü true değerleri arıyordu hatırlıyorsak. console.log(myNum > 5 || myNum == 5); karşılaştırmasında myNum yerine 5 yerleştirdiğimizde 5 > 5 koşulu sağlanamayacağından false gelecektir. Sağ taraftaki eşitlikte ise 5 == 5 koşulunu kontrol ederiz. Buradan true gelir çünkü çift eşitlik (==) iki ögenin değerlerini gerekirse tür dönüşümü yaparak kıyaslar. Her iki değer de 5 olduğu için buradan true gelir. || operatörü true değerini aradığından false || true karşılaştırmasından true çıktısını elde ederiz.

Alt tarafta myNum değişkeninin değerini -5 olarak değiştirdik. Şimdi console.log(myNum > 5 || myNum == 5); kıyaslamasına bakalım. myNum > 5 ifadesinden false gelir çünkü -5 > 5 eşitliği sağlanamaz. İkinci eşitlikte ise -5 === 5 değerlerini kontrol ederiz. Buradan da false gelir. Çünkü === eşitliği ögelerin hem değerlerini hem de türlerini kıyaslayarak sonuç üretir. Nihayetinde false || false kıyaslamasını yaparız. Burada herhangi bir true değer olmadığından false çıktısını alırız.

Sonuç olarak konsolda önce true ardından da false çıktılarını görürüz.

Bilgi Alanı

JavaScript’te == ve === operatörlerini, değerleri kıyaslamak için kullanırız ama aralarında önemli bir fark var. == operatörü, değerlerin tiplerini/türlerini değiştirerek eşit olup olmadıklarını kontrol eder. === operatörü ise, değerlerin hem değer hem de tip olarak eşit olup olmadıklarını kontrol eder.

Mesela 5 sayısı ile “5” stringi arasında == operatörü ile karşılaştırma yaparsak, true sonucunu alırız. Çünkü string 5 ile number 5’in değerleri aynıdır. Ancak aynı kıyaslamayı === operatörüyle yaparsak number 5 ile string 5’in değerleri aynı olmasına rağmen türleri farklı olduğu için bu sefer false çıktısını alırız.

console.log(5 == "5"); // true
console.log(5 === "5"); // false

== operatörü bazen beklenenmedik sonuçlar üretebilir. O yüzden karşılaştırma yaparken === operatörünü kullanmak daha emniyetli bir yaklaşım olacaktır.


SORU 32

let val = "25";

let val2 = (val = 25);

console.log(typeof val);

let val3 = (val == 25);

let val4 = (val == 25);

console.log(val2);
console.log(val3);
console.log(val4);

Sanki biraz karışık gibi görünüyor ancak adım adım ilerlersek daha rahat anlaşılacaktır. Öncelikle val değişkenimizin değerini string 25 olarak belirledik. Ardından val değişkenimizin değerini number 25 ile değiştirdik ve bunu val2 değişkenine eşitledik. Hemen alt tarafta console.log(typeof val); ifadesi ile val değişkeninin türünü konsola yazdırmak istedik. val değişkenimizi number 25’e çevirdiğimiz için konsolda ilk olarak number çıktısını görürüz.

let val3 = (val == 25); ifadesini incelediğimizde val değişkenimizin number 25’e eşit olup olmadığını denetleyen bir eşitlikle karşılaştırıyoruz. Bir önceki adımda zaten val değerimizi number 25’e çevirmiştik. Bu yüzden buradan true çıktısını elde ederiz. Yani val3 değişkenimizin değeri true olacaktır.

let val4 = (val == 25); ifadesi zaten val3 ile aynı. Aynı şekilde buradan da true çıktısını elde ederiz.

Son kısımda sırasıyla console.log(val2); console.log(val3); console.log(val4); değerlerini konsola yazdırmak istiyoruz. val2 değerimiz number 25′ eşitti. Bu yüzden 25 çıktısını elde ederiz. val3 ve val4 değişkenimizin değerini true olarak bulmuştuk.

Sonuç olarak konsolda önce number, sonra 25, sonra true ve true değerlerini görürüz.


SORU 33

let start; let stop;

start = 11;

stop = true;

if (start <= 15 && stop === true) {
console.log("Bitti.");
};

Burada start ve stop değişkenlerini tanımladık, ancak henüz değer atamadık. (Yani şu anda değerleri undefined.) Ardından start değişkenimize 11 değerini, stop değişkenimize ise true değerini atadık. Koşullu ifademizde start değişkenimizin değerinin 15’ten küçük olduğu durum ile stop değişkenimizin değerinin true olup olmama durumunu && operatörüyle kıyasladık. start değişkenimizin değeri 11 olduğu için start <= 15 eşitliğinden true değerini alırız. İkinci ifadede ise stop değişkenimizin değeri true olduğu eşitlikten true çıktısını alırız. Hatırlayacağımız üzere && operatörü false değerlerini bulduğunda duruyordu. Burada hiç false değeri olmadığından true çıktısını alacağız.

true çıktısını aldığımız için koşullu ifademiz sağlanır ve konsolda “Bitti.” stringini görürüz.


SORU 34

const resultVal = false || {} || 11 || null;

console.log(resultVal);

Özel bir durum olmadıkça karşılaştırmalara solda başlarız. İlk olarak false || {} kıyaslamasını yaparız. Hatırlayacağımız üzere || operatörü truthy değerlere bakıyordu. Burada {} (Boş nesne) truthy bir değer olduğu için direkt dönecektir.

Sonra {} || 11 kıyaslamasını yaparız. Yine || operatörü bulduğu ilk truthy değeri döndürecektir. Bu durumda {} (Boş nesne) döner.

Son olarak {} || null karşılaştırmasını yaparız. JavaScript’te null varsayılan olarak falsy değere sahipti. Ancak || operatörü bulduğu ilk truthy değerini döndürdüğünden konsolda nihai olarak {} çıktısını alırız.


SORU 35

let myNum = "11";

let myVal = (myNum === 11);
let myVal2 = (myNum == 11);
let myVal3 = (myNum = 11);

console.log(myVal);
console.log(myVal2);
console.log(myVal3);

myNum değişkenimizin değeri string 11. let myVal = (myNum === 11); ifadesinde myNum değişkenimiz number 11’e hem değer olarak hem de tür olarak eşit mi değil mi kontrol ettik. string 11, number 11’e eşit olmadığından buradan false çıktısını elde ederiz. Bu, myVal’ın değeridir.

let myVal2 = (myNum == 11); ifadesinde string 11 ile number 11 kıyaslaması == eşitliği ile yapılır.

let myVal3 = (myNum = 11); ifadesinde string 11, number 11’e çevrilmiş. Bu yüzden myVal3 değişkeninin değeri number 11 olur.

Bunları sırasıyla konsola yazdırdığımızda sırasıyla false, true, 11 çıktılarını elde ederiz.


SORU 36

console.log(!(true && false || true));

İşlemimize parantez içinden başlarız. Önce true && false karşılaştırmasına bakalım. && operatörü bulduğu ilk falsy değeri döndürür. Bu durumda ilk karşılaştırmadan false çıktısını alacağız. Ardından false || true kıyaslamasını yaparız. || operatörü ise bulduğu ilk truthy değerini döndürür. İlk değer truthy olduğu için buradan true gelir. Mevcut durumda !(true) değerini elde etmiş oluruz. JavaScript’te ! (not operatörü) bir boolean değerin tam tersini döndürür. Bu durumda true’nun tersi false olacağından konsolda nihai olarak false çıktısını görürüz.


SORU 37

let result = 11 || 8 + 2 * 4;
console.log(result);

Normalde karşılaştırma operatörlerinde işlemlerimize soldan başlarız ancak burada dikkat ederseniz matematiksel operatörler var. Bir karşılaştırmada ! (not) operatöründen sonra öncelik matematiksel operatörlere aittir. Bu durumda 8+4*2 işlemini yaparız. Çarpma işlemi önceliğe sahip olduğu için 8+8’den 16 sonucunu elde ederiz. Son durumda 11 || 16 kıyaslamasını yaparız. || operatörü bulduğu ilk truthy değeri döndüreceğinden çıktı olarak 11 sonucunu alırız.


SORU 38

console.log("80" !== 80);
console.log(40 !== 80);
console.log(80 !== 80);

İlk ifadede string 80 ile number 80 , !== (Eşit değildir) operatörüyle kıyaslanmış. Eşit değildir operatörü kısaca === (üç eşit) operatörünün sonucunun tersini alır. Düz bir şekilde mantık kuracak olursak string 80 ile number 80 birbirine eşit olamayacağından normalde sonuç false çıkacaktır. Ancak ! (not) operatörü olduğundan tersini alacağız. Yani sonuç true çıkacaktır.

İkinci ifade de benzer şekilde true çıkacaktır çünkü üç eşittir (===) operatörüyle kıyaslama yaptığımızda 40 ve 80 değerlerinin birbirine eşit olmadığını görüyoruz. Yani false çıktısını elde ediyoruz. ! operatörüyle tersini aldığımızda ise true çıktısını elde ederiz.

Son ifadede number 80 ile number 80 karşılaştırılmış. Hem değer hem de tür olarak birbirlerine eşit olduklarından true çıktısını alırız. Ancak ! operatörü olduğu için true, false değerine dönüşür.

Konsolda sırasıyla true, true, false çıktılarını görürüz.


SORU 39

let query = false || "false";
console.log(typeof query);

Burada tuzak var. Hatırlayacağımız üzere iki tırnak arasına yazılan ifadeler doğrudan string oluyordu. Burada “false” aslında bir string ifadedir. İlk ifade falsy, ikinci ifade ise truthy değere sahiptir. || operatörü bulduğu ilk truthy değerini döndüreceğinden “false” stringi döner. Ancak burada bizden, dönecek olan değerin türünü konsola yazdırmamız isteniyor. Bu yüzden string değerini çıktı olarak görürüz konsolda.


SORU 40

if(-40 || ''){
console.log("İlk değer.")
};

if(-40 && ''){
console.log("İkinci değer.")
};

if(null && (-40 && 40)){
console.log("Üçüncü değer.")
};

İlk koşullu ifademizde -40 değeri ile boş string(”) karşılaştırmasını yapıyoruz. JavaScript’te 0 ve -0 hariç tüm sayılar truthy değerine sahiptir. Boş string (”) ise falsy değerine sahiptir. || operatörü bulduğu ilk truthy değeri döndürür. Bu yüzden koşullu ifade sağlanır ve konsolda İlk değer yazısını görürürüz.

İkinci koşullu ifademizde yine aynı değerler bu sefer && operatörüyle karşılaştırılmış. && operatörü bulduğu ilk falsy değeri döndüreceğinden false çıktısını elde ederiz. Koşullu ifade sağlanamadığından konsolda hiçbir şey yazmaz.

Üçüncü koşullu ifademize baktığımızda işlem önceliğine sahip bir yapı görüyoruz. (Parantez içi) Bu yüzden önce -40 ile 40 değerlerini && operatörüyle kıyaslarız. && operatörü normalde bulduğu ilk falsy değeri döndürüyordu. Ancak burada her iki değer de truthy olduğu için ilk bulduğu truthy değeri döndürecektir. Parantez içinin değeri true olacaktır. Ardından null ile true değerini, && operatörü ile kıyaslarız. null falsy bir değer olduğundan && operatörü bunu döndürecektir. Sonuç olarak üçüncü koşullu ifademizin değeri false olacaktır ve koşullu ifade çalışmayacaktır.

Genel sonuç: Konsolda yalnızca İlk değer. stringini göreceğiz.

Bilgi Alanı

JavaScript’te aşağıdaki değerler falsy olarak kabul edilir:

  • false
  • 0 (sıfır)
  • -0 (eksi sıfır)
  • 0n (BigInt sıfır)
  • “” (boş string)
  • null
  • undefined
  • NaN (Not-A-Number)

Evet, bir JavaScript mülakat soruları bölümümüzün sonuna daha geldik. Sorular ağırlaştıkça açıklamalar da artıyor haliyle. O yüzden yazılar da uzuyor. Ancak okuduğunuza değeceğini düşünüyorum çünkü her bir soruyu adım adım açıklıyorum. Umarım faydalı olmuştur.

JavaScript mülakat soruları part-5’te görüşmek üzere!

3 thoughts on “JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 4”

  1. Geri bildirim: JavaScript Mülakat Soruları - Temelden İleri Seviyeye : Part 5

  2. Geri bildirim: JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 6

  3. Geri bildirim: JavaScript Mülakat Soruları: Temelden İleri Seviyeye – Part 7 - Frontçu Abi

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top