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

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

JavaScript mülakat soruları serimizin beşinci bölümüyle devam ediyoruz. Bu bölümde ternary operator, switch/case yapıları ve tekrar amaçlı || (veya) operatörü yapılarına değineceğiz. Her bir bölüm bir öncekinin üzerine koyarak ilerliyor. Bölümler ilerledikçe yeni yapıları da haliyle görüyor olacağız. JavaScript mülakat soruları serimizin diğer bölümlerine aşağıdan ulaşabilirsiniz:

Hazırsanız JavaScript mülakat soruları serimize devam edelim. En son 40. soruda kalmıştık. Şimdi 41’den devam edelim.

SORU 41

let order = 6;

console.log(order >= 10 ? "Yeterli sayıda sipariş var." : "Yeterli sayıda sipariş yok.")

Burada ilk defa karşımıza çıkan ternary operator yapısı var. Ternary operator kısa bir şekilde ifade etmek istersek modern if/else diyebiliriz. Mantığı oldukça basittir. Eğer bir koşul true döndürüyorsa soru işaretinden sonraki ifadeyi çıktı olarak alırız. Eğer aksi bir durum varsa iki noktadan sonraki ifadeyi çıktı olarak alırız.

Örneğimize bakacak olursak order değişkeninin değeri 6 olarak belirlenmiş. Hemen altta da konsola koşullu olarak bir ifade yazdırmak istedik. Bu koşullu ifadeye göre eğer order değişkeni number 10’a eşit yahut ondan büyükse konsola “Yeterli sayıda sipariş var.” yazdıracağız. Aksi durumda ise konsola “Yeterli sayıda sipariş yok.” yazdıracağız. order değişkenimiz 10’a eşit yahut büyük olmadığı için koşul sağlanamayacak ve iki noktadan sonraki ifadeyi konsolda göreceğiz. Yani sonuç olarak konsolda “Yeterli sayıda sipariş yok.” çıktısını görürüz.

SORU 42

let start = 10;

if (start === 10){
console.log("Güzel başlangıç.")
}

switch (start) {
case 10: console.log("Bu da güzel başlangıç.")
}

Yine Javascript mülakat soruları serimizde ilk defa karşımıza çıkan bir yapı görüyoruz: switch/case. Bu da else/if yapısına benzemekle birlikte daha modern bir yapı olarak karşımıza çıkıyor. Örnek üzerinden ilerleyerek gidelim. İlk ifadeye zaten aşinayız. start değişkeninin değeri number 10. Koşullu ifadede yerine koyduğumuzda 10 === 10 eşitliği sağlanacak ve konsolda “Güzel Başlangıç” yazısını göreceğiz.

switch ifadesinde start yerine 10 yazarız. İfadenin içindeki koşul case’in 10 olması durumunda konsolda “Bu da güzel başlangıç.” yazdırılmasını sağlamaktan ibaret. Bu da benzer şekilde üstteki if’li yapıyla aynı sonucu verecektir. switch/case yapılarında ek olarak break ve default gibi kavramlar da var. Bir sonraki soruda onları göreceğiz.

SORU 43

let first = 4;

let second = 10;

switch (first) {
case 0: break;
case 2: second++; break;
case 4: second--; break;
default: second = 1; break;
};

console.log(second);

Baştan başlayıp yorumlayarak ilerleyelim. first değişkenimizin değeri 4, second değişkenimizin değeri ise 10. switch ifadesinde first değişkenini yerine yerleştirdiğimizde (Parantez içinde first yani) case blokları çalışmaya başlayacaktır. Önce case 0’dan başlarız. case 0: break; ifadesi kısaca şudur: Eğer case 0 değerine eşitse hiçbir şey yapmadan döngüyü sonlandır. break ifadesi case’in koşulu sağlaması durumunda diğer case bloklarına baakmadan döngüyü sonlandırmamızı sağlar. Ancak first yerine 4 geldiği için koşul sağlanmayacak ve bir sonraki case bloğuna geçiş yapacağız.

İkinci blokta eğer case 2 ise (Yani parantez içindeki first değeri 2’te eşitse) second değişkeninin değerini 1 artırdığımız bir yapı var. first’ün değeri 4 olduğu için bu koşul da sağlanmayacak ve bir sonraki case bloğuna geçiş yapacağız.

Üçüncü blokta koşulumuz sağlanıyor. first’ün değeri 4 olduğu için case bloğumuz aktif olacak ve second değişkenimizin değeri 1 azaltılmış olacak. break ifadesi de koşul sağlandığı için döngüyü sonlandıracak. Yani sonuç olarak konsolda 9 çıktısını göreceğiz.

default ise kısaca else işlevi görür. Eğer first’ün değeri üstteki case’lerden herhangi birine eşit olmasaydı default bloğu devreye girecekti ve second değişkeninin değerini 1 olarak belirleyip döngüyü sonlandıracaktı.

SORU 44

let phrase = 11 > 5 ? 12 : 25;

console.log(phrase);

Ternary operator yapısı karşımıza yine çıktı. Soldan başlayarak koşulumuzu kontrol edelim. 11 > 5 eşitliği doğru bir eşitlik olduğundan koşulumuz sağlanacak ve daha önce de gördüğümüz üzere soru işaretinden sonraki değer konsola yazdırılacaktır. Eğer koşulumuz sağlanmasaydı iki noktadan sonraki değer konsola yazdırılacaktı. Bu durumda konsolda 12 çıktısını görürüz.

SORU 45

let start = 111;

let stop = if start < 170 ? 15 : 41;

console.log(stop);

Burada ternary operator’un yanlış bir kullanımını görüyoruz. ternary operator yapılarında if kullanılmaz. Bu yapı zaten koşullu bir ifadeyi temsil ediyor. Bu yüzden konsolda hata mesajı görürüz. Hata mesajı şu olur: Uncaught SyntaxError: Unexpected token ‘if’

SORU 46

let num1 = 11;

num2 = num1 = typeof num2;

console.log(num2);

num1 değişkenimizin değeri 11. Eşitliklerde sağdan başlayarak ilerleriz. Önce typeof num2; ifadesini inceleyelim. num2’nin veri tipi undefined olur çünkü num2 değişkenimize herhangi bir değer atamadık. Yalnız burada dikkat edelim ki döndürülen undefined yazısı varsayılan olarak string formatındadır. Daha sonra num1 = undefined eşitliğine bakarız. Bu ifade num1’in değerini undefined olarak belirledik. (string undefined; değer olarak atanır, veri tipi değişmez dikkat.) Son olarak da num2 = num1 eşitliğine bakarız. num1’in değeri undefined olduğu için num2’nin değeri de undefined olur. Sonuç olarak konsolda undefined stringini görürüz.

Not: Eğer num2’nin veri tipini öğrenmek isterseniz console.log(num2); ifadesinden sonra typeof num2; yazabilirsiniz. Konsolda string yazdığını göreceksiniz.

SORU 47

const phrase = null || false || "";

console.log(phrase);

Burada tekrar amaçlı || operatörü konusu karşımıza çıktı. Karşılaştırmamıza en soldan başlarız. Önce null || false karşılaştırmasına bakalım. Hatırlayacağımız üzere || (veya) operatörü bulduğu ilk true değerini döndürüyordu. null ve false, falsy değerlerdir. Yani burada hiç truthy değer yok. || operatöründe eğer hiç truthy değer yoksa en sonki falsy değer döndürülüyordu. Bu yüzden bu karşılaştırmada false döner. Ardından false || “” karşılaştırmasını yaparız. “” (Boş string) varsayılan olarak falsy bir değerdi. Bu yüzden yine iki false değeri veya operatörüyle karşılaştırırız. İki false olunca en sonuncu falsy değer döneceğinden çıktı olarak “” (Boş string) alırız. (Yani konsolda bir şey görmeyiz.)

Not: “” (Boş string) ile ” ” (Boşluk bırakılmış) string ayrımına dikkat edelim. İlki falsy değerken boşluk bırakılmış string truthy değerdir.

SORU 48

let examScore = 80;

let result = examScore < 45 ? "Sınav sonucunuz: Zayıf" 
: (45 <= examScore && examScore < 65) ? "Sınav sonucunuz: Geçer"
: (65 <= examScore && examScore < 70) ? "Sınav sonucunuz: Orta"
: (70 <= examScore && examScore < 85) ? "Sınav sonucunuz: İyi"
: (85 <= examScore && examScore <= 100) ? "Sınav sonucunuz: Çok iyi"
: "Geçersiz puan";

console.log(result);

Burada zincirleme ternary operator yapısını görüyoruz. Baştan başlayarak ilerleyelim. examScore değişkeninin değeri 80. result değişkenindeki koşullu ifadeye 80’i yerleştirelim. 80 < 45 koşulu sağlanamayacağından ilk blok atlanacaktır. İkinci blokta (45 <= examScore && examScore < 65) karşılaştırmasına bakarız. Burada sınav sonucunun 45 ile 65 arasında bir değer olup olmadığını kontrol ediyoruz. Sınav sonucumuz 80 olduğu için bu bloğu da atlayıp bir sonrakine geçiyoruz. Bu sefer (70 <= examScore && examScore < 85) karşılaştırmasını kontrol ederiz. Sınav sonucumuz 80 olduğu için bu koşul sağlanır ve konsolda Sınav sonucunuz: İyi çıktısını görürüz.

SORU 49

let myNum = 11;

console.log(myNum % 3 === 7 ? true : false);

myNum değişkenimizin değeri 11. Konsol ifadesinde yerine yerleştirdiğimizde önce 11%3 işlemini yaparız. Bu aslında bir bölme işlemi ancak JavaScript’te bölme işleminin mantığı biraz farklı. Mod dediğimiz bir mantıkta çalışıyor. 11%3 ifadesi aslında 11’in 3’e bölümünden kalanı ifade eder. 11%3 işleminden kalan ifade 2 olacağı için 2 === 7 eşitliğine bakarız. Üç eşittir operatörü iki ögenin hem veri tipi olarak hem de değer olarak kıyaslamasını yapıyordu. 2, 7’ye eşit olamayacağı için false çıktısını elde ederiz burada. Ternary operator’de eğer bir ifade true ise soru işaretinden sonraki değer dönüyordu, aksi halde iki noktadan sonraki değer dönüyordu. Burada iki noktadan sonraki değer false olduğu için konsolda false çıktısını görürüz.

SORU 50

let myNum = 11 + 11;

switch (myNum) {
case 21: console.log("Yaklaştın.")
case 22: console.log("Tam isabet!")
default: console.log("Bir tık üstü.")
};

Yine bir switch/case yapısı ancak dikkat etmemiz gereken bir nokta var. Bu switch yapısında break yok. break, koşul sağlandığında döngüyü sonlandırır. Baştan başlayarak ilerleyelim.

myNum değişkeninin değeri 22. switch ifadesinde yerine yerleştirdiğimizde parantez içindeki case blokları çalışmaya başlar. İlk case bloğundaki değer 21 olduğu için diğer case bloğuna geçeriz. Bu case bloğundaki değer 22 olduğu için case bloğu çalışır ve konsola Tam isabet! yazdırılır ancak break olmadığı için döngü devam eder ve bir sonraki bloğa geçilir. default bloğu da çalışır ve konsola Tam isabet! yazısından sonra Bir tık üstü. de yazdırılır.

JavaScript mülakat soruları bölüm 5’in sonuna geldik. Şimdiye dek 50 soru oldu. Umarım faydalı olmuştur.

Part-6’da görüşmek üzere.

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

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

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

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

Yorum bırakın

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

Scroll to Top