Functions in JavaScript

Kategori: Javascript , 01 Kasım 2019 , JanFranco


function ifadesi ile fonksiyon tanımlayabiliriz. Parametre değerler belirleyebilir, return ifadesi ile değerler dönebiliriz. Javascript'te fonksiyonların tipini belirtmeyiz. Fonksiyonlardan herhangi bir değer dönmezsek, default olarak undefined değeri return edilir:


function id(x) {
    return x;
}

id('hello');
>>
'hello'

function f() { }
f()
>>
undefined
Javascript'te fonksiyonları 3 şekilde kullanabiliriz: Normal fonksiyon şeklined, Constructor şeklinde, method şeklinde. Normal fonksiyon örneğini yukarıda verdim, parametresi olan, return değeri olan basit fonksiyonlar normal fonksiyonlardır. Eğer bir fonksiyonu Constructor olarak kullanacaksak new operatörünü olaya dahil ederiz:


new Date()
Fonksiyonları bir sınıfın özelliğği olarak kullanabiliriz. Bu durumda fonksiyon methoda dönüşmüş olur:


obj.method()
Fonksiyonlarda belirlediğimiz değerler parametredir. Fonksiyonunu çağırırken parametrelere gönderdiğimiz değerler argümanlardır:


function foo(param1, param2) {
    ...
}

foo(3, 7)
param1 ve param2 parametredir, 3 ve 7 değerleri argümandır. Fonksiyonları tanımlandığı satırdan önce çağırabiliriz:


foo();

...

function foo() {
   ...
}
name özelliği fonksiyonların isimlerini alabiliriz:


function f1() {

}

f1.name
'f1'
Fonksiyon tanımlarken sınırsız parametre kullanabiliriz. Örneğin toplama fonksiyonu yazacağız ve parametre olarak verilen tüm sayıların toplanmasını istiyoruz. Bu durumda parametre belirlemeyip arguments ifadesini kullanabiliriz:


function logArgs() {
    for (var i=0; i<arguments.length; i++) {
	console.log(i + '. ' + arguments[i]);
    }
}

logArgs('hello', 'world');
>>
0. hello
1. world
Argümanların eksik olduğunu undefined değeri ile veya arguments.length özelliği ile belirleyebiliriz:


function foo(mandatory, optional) {
    if (mandatory === undefined) {
	throw new Error('Missing parameter: mandatory');
    }
}

if (arguments.length < 1) {
    throw new Error('You need to provide at least 1 argument');
}
Javascript'te argüman olarak gönderdiğimiz değerler fonksiyonda kopyalanır ve fonksiyonun içinde işlemler yapılır. Fonksiyon bittiğinde asıl değer değişmez (pass by value):


function incrementByOne(number) {
    number++;
}

var x = 5;
incrementByOne(5)
x
>>
5
Eğer değerin değişmesini istiyorsak (pass by reference), argümanı dizi şeklinde vermeliyiz:


function incrementByOne(number) {
    number[0]++;
}

var n = [7];
incrementByOne(n);
n
>>
8
Python'da olduğu gibi parametrelere isim veremeyiz. Javascript'te böyle bir özellik yok fakat kendi imkanlarımızla bunu yapabiliriz:


function selectEntries(options) {
    options = options || {};
    var start = options.start || 0;
    var end = options.end || getDbLength();
    var step = options.step || 1;
}

selectEntries({ step: 2 });
selectEntries({ end: 20, start: 3 });
selectEntries();
Fonksiyonu 3 farklı şekilde çağırdık. İlk çağırdığımızda bir küme içinde step değeri gönderdik. Fonksiyon çalıştığında ilk olarak options parametresini kontrol edecek. Bunu || (or) operatörü ile yaptık. Burada options parametresi değişmeyecek. Daha sonra start değişkeni tanımlanacak. Biz bu şekilde bir argüman göndermedik, bu nedenle start değişkeninin değeri || or operatörünün yardımı ile (0 || 0) 0 olarak belirlenecek. Aynı şey end değişkeni için de geçerli. Or operatörü biliyoruz ki şu şekilde çalışıyor, sol taraftaki değer 0 değilse sol taraftaki değer geçerli oluyor, 0 ise sağ taraftaki değer geçerli oluyor. Bu nedenle step değişkeninin değeri 2 oluyor. İkinci çağırışımızda end ve start argümanlarını gönderdiğimizden dolayı, start değişkeni 3, end değişkeni 20, step değişkeni 1 olarak belirleniyor. Eğer hiç bir argüman göndermiyorsak, fonksiyonun ilk satırında options değeri boş küme olarak belirleniyor.


Sonraki Yazı: Objects and Inheritance
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın