JavaScript Dilinde Fonksiyon Çağırma Teknikleri

JavaScript Dilinde Fonksiyon Çağırma Teknikleri

JavaScript dilinde çağıran fonksiyon ile çağrılan fonksiyon arasındaki veri değişimi ya da paylaşımı iki farklı teknikten biri ile gerçekleştirilir. Bunlar,
  1. Değer ile Çağırma (Call by Value)
  2. Referans ile Çağırma (Call by Reference)
teknikleridir.
Değer ile Çağırma tekniği, JavaScript'te sayısal değişkenler, tek dizi elemanı, boolean tipteki değişkenler için kullanılır.

Referans ile Çağırma tekniği ise, tüm dizinin, dizi adı ile ve indis-parantez kullanmadan fonksiyon argümanı olarak kullanıldığı durumlarda ve nesneler için kullanılır.

Değer ile Çağırma tekniğinde çağıran programdaki argümanlar içindeki değerler, çağrılan fonksiyon içindeki değerlere aktarılır. Çağrılan fonksiyonun parametreleri için fonksiyon içinde gerçekleştirilen değişiklikler, bu parametrelere karşı gelen çağıran program argümanlarını etkilemez. Fonksiyon, return deyimi ile çağıran programa geri döndüğünde, parametre değerleri bellekten silinecektir.

Referans ile Çağırma tekniğinde ise, çağıran program argüman olarak bir değer yerine bu değere ait bellek adresini gönderir. Bu durumda argüman ile buna karşı gelen fonksiyon parametresi aynı bellek alanını kullanır. Bunun doğal sonucu olarak, alt programda bu şekilde kullanılan bir parametredeki değişiklik buna karşı gelen çağıran program argümanına aynen aktarılacaktır. Sonraki bölümlerde bu tekniklerin her biri ayrıntılı olarak anlatılmaktadır.

Değer ile Fonksiyon Çağırma (Call By Value)

Fonksiyonları değer ile çağırma tekniğinde prensip, çağıran program ya da fonksiyondaki argümanlarla çağrılan fonksiyonda bunlara karşı gelen parametrelere bellekte farklı yerlerin ayrılmasıdır.

Değer ile fonksiyon çağırma

<html>
<head>
<TITLE>İÇİNDEKİLER</TITLE>
</head>
<body bgColor="lightblue" text="darkblue">
<SCRIPT LANGUAGE="javaSCRIPT">
function hes1(a)
{ a=a*5;
document.write("<H4>a= "+a+"</H4>");
}
var x=[3,6,9,12,15];
document.write("<H4>FONKSİYONU ÇAĞIRMADAN ÖNCE X DİZİSİ</H4>");
for( var b in x)
document.write("<H4>x["+b+"]= "+x[b]+"</H4>");
for (var i in x)
hes1(x[i]);
document.write("<H4>FONKSİYONU ÇAĞIRDIKTAN SONRA X DİZİSİ</H4>");
for( var b in x)
document.write("<H4>x["+b+"]= "+x[b]+"</H4>");
</SCRIPT>
</body>
</html>

Bu örnekte, hes1fonksiyonu bir for çevrimi içinde ve her seferinde dizinin bir elemanı argüman olarak gönderilerek çağrılıyor. O nedenle değerle çağırma söz konusudur ve gönderilen değer x[i] ile hes1'de buna karşı gelen a değişkenine bellekte ayrı yerler ayrılacak ve a'da meydana gelen bir değişiklik x[i] değerini etkilemeyecektir.



Referans ile Fonksiyon Çağırma (Call By Reference)


Referans ile Çağırma tekniğinde, çağıran program argüman olarak bir değer yerine bu değere ait bellek adresini gönderir. Böylece veri paylaşımı, değerler yerine adreslerle gerçekleştirilir. Bu durumda argüman ile buna karşı gelen fonksiyon parametresi aynı bellek alanını kullanır. Bunun sonucunda çağrılan fonksiyonda bu şekilde kullanılan bir parametredeki değişiklik buna karşı gelen çağıran program argümanına aynen aktarılacaktır.

Referans ile Çağırma tekniği


<html>
  <head>
  <TITLE>İÇİNDEKİLER</TITLE>
    </head>
  <body bgColor="lightblue" text="darkblue">
<SCRIPT LANGUAGE="javaSCRIPT">
function hes(y)
{ for (var a in y)
y[a]=y[a]-4;
}
var x=[3,6,9,12,15];
document.write("<H4>FONKSİYONU ÇAĞIRMADAN ÖNCE X DİZİSİ</H4>");
for( var b in x)
document.write("<H4>x["+b+"]= "+x[b]+"</H4>");
hes(x);
document.write("<H4>FONKSİYONU ÇAĞIRDIKTAN SONRA X DİZİSİ</H4>");
for( var b in x)
document.write("<H4>x["+b+"]= "+x[b]+"</H4>");
</SCRIPT>
  </body>
</html>

Yukarıdaki örnekte dizi adı argüman olarak kullanıldığı için Referans ile Çağırma tekniği kullanılır. Bu durumda x ve y dizileri bellekte aynı alanı paylaşır ve y’de meydana gelen bir değişiklik x’i de değiştirecektir.

Yorumlar

Bu blogdaki popüler yayınlar

İç İçe Döngüler

CSS Bir Elemanın Genişliği ve Yüksekliği