Javascript Eğitim Dersleri #002

21 Şubat 2008, Perşembe

Fonksiyon’a Giriş

Aynen lise yıllarında, matematik dersinde gördüğümüz şeydir fonksiyon. Sıkca yaptığımız rutin işlemleri fonksiyonlar yardımıyla çözümleriz. Fonksiyona parametre yada parametreler geçebilir, gerekiyorsa fonksiyondan geriye değer dönebiliriz.

  1. function addNumber( input )
  2. {
  3.  return input + 5;
  4. }

Yukarıdaki addNumber fonksiyonu, tek parametre alır. Geçtiğimiz sayı kaç ise o sayıya 5 ekler ve geri döner.

  1. var a = addNumber( 20 );
  2. window.alert( a ); // 25

Fonksiyon’a parametre olarak 20 geçtik. Fonksiyon, gelen değere 5 ekledi ve geri döndü. Bu bakımdan a değişkeninin değeri, fonksiyondan gelen değer oldu.

Ufak bir değişiklik yapıp, eğer gelen şey sayı ise işlem yapılsın, değilse hata dönsün.

  1. function addNumber( input )
  2. {
  3.  if( isNaN( input ) )
  4.  {
  5.   return 'Hata';
  6.  }
  7.  else
  8.  {
  9.   return input + 5;
  10.  }
  11. }

function.arguments ( nesne )

Fonksiyona geçilen parametre / parametreler arguments nesnesi içinde olurlar. Array şeklinde sıralanmışlardır. Eğer arguments[ 0 ] dersek ilk geçilen parametreye ulaşabiliriz. Yani;

  1. function addNumber()
  2. {
  3.  if( isNaN( arguments[ 0 ] ) )
  4.  {
  5.   return 'Hata';
  6.  }
  7.  else
  8.  {
  9.   return arguments[ 0 ] + 5;
  10.  }
  11. }

Dikkat ederseniz, fonsiyonu yazarken function addNumber( input ) değilde direkt function addNumber() şeklinde yazıdık. İçeride işlem yaparken de arguments[ 0 ] kullandık.

Array şeklinde durur dedikya, demekki Array’lerin ortak özelliği olan length’i kullanarak bu fonksiyona geçilen parametre sayısını da öğrenebiliriz.

  1. function addNumber()
  2. {
  3.  window.alert( arguments.length );
  4.  if( isNaN( arguments[ 0 ] ) )
  5.  {
  6.   return 'Hata';
  7.  }
  8.  else
  9.  {
  10.   return arguments[ 0 ] + 5;
  11.  }
  12. }

Kontrol Durumları ( if / else / switch )

if / else

Duruma göre akışı değiştirmek için kullanılan ifadelerdir. Önemli hususlar;

  • == : Eşittir.
  • != : Eşit Değildir.
  • ! : false

anlamındadır. Eğer boolean ( mantıksal ) işlem yapıyorsak, yani ifade “TRUE ise” demek için;

  1. var a = true;
  2. if( a ) // a eğer true ise
  3. {
  4.  window.alert( 'Ok!' );
  5. }

Eğer “FALSE ise” demek için;

  1. var a = true;
  2. if( !a ) // a false ise
  3. {
  4.  window.alert( 'Ok!' );
  5. }

Eşitlikler için;

  1. var a = 5;
  2. if( a == 5 ) // a, 5’e eşit ise
  3. {
  4.  window.alert( 'Ok!' );
  5. }
  1. var a = 4;
  2. if( a != 5 ) // a, 5’e eşit değil ise
  3. {
  4.  window.alert( 'Ok!' );
  5. }

else ifadesi “DEĞİLSE” anlamındadır. Aşağıdaki örnek: eğer, strUsername lego ise işlem yap, değilse bak, eğer vigo ise başka bir işlem yap, eğer herikisi de değilse bambaşka bişi yap ve bitir.

  1. var strUsername = 'vigo';
  2. if( strUsername == 'lego' )
  3. {
  4.  window.alert( 'Kullanıcı adı : lego...' );
  5. }
  6. else if( strUsername == 'vigo' )
  7. {
  8.  window.alert( 'Kullanıcı adı : vigo' );
  9. }
  10. else
  11. {
  12.  window.alert( 'Kullanıcı adı : lego değildir!..' );
  13. }

switch / case

Çok faydalı bir kontrol sistemidir. if / else’e göre daha az kaynak kullanır. Pek çok js uzmanı if / else yerine bunu kullanmayı önerir.

Amacımız şu; kullanıcı seviyelerine göre farklı menü göstermek istiyoruz. 3 tip kullanıcı olsun; admin - moderatör ve standart kullanıcı. Admin = 0, Moderatör = 1 ve Standart = 2 olsun

  1. var intUserLevel = 0;
  2. switch( intUserLevel )
  3. {
  4.  case 0 :
  5.   print_admin_menu();
  6.  break;
  7.  case 1 :
  8.   print_moderator_menu();
  9.  break;
  10.  case 2 :
  11.   print_standart_menu();
  12.  break;
  13. }

Peki, intUserLevel 0,1,2 dışında bir değer ise?

  1. var intUserLevel = 0;
  2. switch( intUserLevel )
  3. {
  4.  case 0 :
  5.   print_admin_menu();
  6.  break;
  7.  case 1 :
  8.   print_moderator_menu();
  9.  break;
  10.  case 2 :
  11.   print_standart_menu();
  12.  break;
  13.  // Eğer hiç biri değilse
  14.  default:
  15.   window.alert( 'Hatalı Kullanıcı!' );
  16.  break;
  17. }

Conditional (Ternary)

koşul ? true ise : false ise
  1. var a = 5;
  2. var b = ( a > 4 ) ? 'büyük' : 'küçük';
  3. window.alert( b ); // büyük

Eğer a 4’ten büyük ise b’nin değeri büyük, değil ise küçük olacaktır.

Döngüler ( for / while )

for

Döngü yapmak için kullanılır. 3 parametre belirlenir. Başlangıç , koşul, koşul true ise ne olacağı

  1. for( var i = 0; i < 5 ; i++ )
  2. {
  3.  // döngü içindeki alan
  4. }

Başlangıç : 0 ( var i = 0 )

Koşul : i, 5’ten küçük olduğu sürece ( i < 5 )

Koşul true ise : i’yi arttır. ( i++ )

i, 5’ten küçük olduğu sürece i++ işleyecek ve her defasında i, birer birer artacak. Eğer i’nin 2şer 2şer artmasını isteseydik, i+=2 yazmamız gerekecekti.

  1. for( var i = 0; i < 5 ; i++ )
  2. {
  3.  window.alert( i );
  4. }

i, 5’ten küçük olduğu sürece alert olacak. 0,1,2,3 ve son olarak 4 alert edecek.

while

for gibi kullanılır. Bazen duruma göre tercih edilebilir.

  1. var i = 0;
  2. while( i < 10 ) // Aşağıdaki durum, i 10’dan küçük olduğu sürece işler
  3. {
  4.  window.alert( i );
  5.  i++;// eğer bunu satır olmazsa sonsuz döngü olur.
  6. }