Photo by Osman Rana on Unsplash

JAVASCRIPT’IN TARIHÇESI

Javascript Default Parameters

Javascript Default Parameters Nasıl Çalışır ? Ne avantaj sağlar ?

Bu yazıyı daha önceden yazmış olduğum Javascript’in Tarihçesi yazısının bir devamı olarak yazıyorum. Bir çok kavramı tek bir yazıda ele almanın yaratacağı karmaşıklıktan kaçmak için bu yönteme başvurdum. Bu yazılardaki amacım önceden Javascript’in varolan hangi özelliklerinin yetmediğini ve bu geliştirmeyle neyi hedeflediklerini anlatacağım.

Özetle aşağıdaki kavramları anlatmaya çalışacağım.

  • Truthy and Falsy değerler nelerdir ?
  • Type Coercion, Conversion ve Double exclamation points (!!) nelerdir ?
  • Default Parameters Nasıl Çalışır ? Ne Avantaj sağlar ?

1. Falsy ve Truthy değerler nelerdir?

İlk önce “Falsy” kavramını anlatarak başlamak istiyorum. Boolean kapsamda değeri False olan değişkenlere “falsy” diyoruz. Bunlar if(){}, while(){}, vb durum karşılaştırmalarında ilgili kod bloklarının içerisine girmemesini sağlayarak mantıksal akışlar oluşturmasını sağlar.

Javascipt içerisinde 7 tip falsy değer bulunmaktadır. Aşağıdaki tüm değerler JS tarafından false olarak algılanır.

  • false : boolean değer olarak
  • 0 : int değer olarak
  • 0n: BigInt değeri olarak
  • "", '', `` : Boş string değerleri. Double quotes, Single quotes ve String template literals
  • null: Bir değişkenin değeri yok şeklinde bir atama belirtilmiş ise.let a=null
  • undefined: Bir değişken tanımlanırken hiç bir atama yapılmamış ise let a;
  • NaN: Not a Number

Truthy değerler ise falsy dışında kalan bütün değerlerdir. Örneğin aşağıdaki değerler Boolean kapsamında hep true değeri verir

if (true)
if ({})
if ({age:12})
if ([])
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)

2. Type Coercion, Conversion ve Double exclamation points (!!) nelerdir ?

Her değerin Java’da aynı zamanda Boolean kapsamında(Context) bir Truthy veya Falsy karşılığı bulunur. Biz ne zamanki bu değişkeni if (degisken) veya !!degisken nesne implicit(arka planda) yukarıda bahsettiğim şekilde bir dönüşüme uğrar. Bu işleme coercion denir. Double exclamation points de bu coercion işlemini çalıştıran ayrı bir kullanım yöntemidir. Aşağıda bir kaç örnek ile anlatmak gerekirse.

let age=39
let name="Onur"
let user={age:39 name:'Onur'}
let users=[]
let school;
//Coercion
if(age) true
if(name) true
if(user) true
if(users) true
if(school) false
let rslt=!!school //Double exclamation point 2defa -1 carpılır.
console.log(result) //false

Conversion ise implicit veya explicit şekilde yapılabildiği gibi asıl amacı türler arasında dönüşümü sağlamaktır. Number → String veya String → Number dönüştürme işlemlerine denir . Aşağıdaki örneklerde implicit ve explicit değişimlere örnek verişmiştir.

5+2.0 //7 burda float değeri implicit olarak int dönüşür.
Number("7") // burda string değeri explicit olarak int dönüşür.

3. Default Parameters Nasıl Çalışır ? Ne Avantaj sağlar ?

Javascript geçirilen değerlerin her zaman undefined olup olmamasını kontrol etmek ve buna default değerler atamak yaptığımız if kontrolleri vardır. Bu tip durumlarda Default Parameters sizin kodunuzu daha güzel ve okunabilir hale getirir.

//Without Default Parameter
function ekle(arr,val){
if(arr===undefined) arr=[];
arr.push(val);
return arr;
}
//With Default Parameter
function ekle(arr=[],val){
arr.push(val);
return arr;
}

Bazen değişken ilk aşamada bir default değer atanıp daha sonra içerisinde geçirilen değişkenlerden bu değer oluşacağı durumlar olabilir. Örneğin Redux store bu tip durumlar için store default değerleri default parameter olarak fonksiyona geçirilir. Aşağıdaki toplama işleminde undefined değer geçtiğimizde bunları default parametrelerden kullandığını görebilirsiniz.

function sum(a=10, b=2){
return a+b;
}
sum (2,2) //4
sum () //12
sum (3) //5

Son olarak aşağıdaki örnekte sadece değer geçilmediği ve undefined geçildiği durumda default parameter çalıştığını görebilirsiniz. Diğer falsy değerler için bu durum geçerli değildir.

function test(num = 1) {
console.log(typeof num);
}

test(); // 'number' 1
test(undefined); // 'number' 1
test(''); // 'string' ''
test(null); // 'object' null

Referanslar

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--