Dec 11

Javascript == ve === arasındaki fark

Tag: Genel,JavascriptM. Cihat Altuntaş @ 2:18 am
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8">

	<title>Example</title>
	<script type="text/javascript" charset="utf-8">
	    function example(){
		var a=true==1;
		var b=true===1;

		alert(a);
		alert(b);
	    }
	</script>
	
</head>
<body>
	<input type="button" name="btn" id="btn" value="Press" onclick="example();">
</body>
</html>

Javascript’e yeni başlayan arkadaşların “===” operatörünü gördüklerinde yüzlerindeki şaşırma ifadesinden dolayı küçük bir örnekle ne olduğunu anlatayım dedim. Yukarıdaki örneği html olarak kaydedip favori tarayıcınızda çalıştırırsanız ilk alert için ekranda “true” ikinci alert için ekranda “false” yazdığını göreceksiniz.

Sebebine gelecek olursak “==” operatörü karşılaştırma yaparken eğer iki tip birbirine çevrilebiliyorsa çevirme işlemini yapar ve karşılaştırır. Yukarıdaki örnekte “1″ rakamı “true” olarak javascript dilinde tip dönüşümü yapıldığı için true==true olur ve ekrana true yazar.

İkinci operatör yani “===” tip çevrimi yapmadan kontrol edilmek istenen değerlerin hem tip hemde değerini kontrol eder ve ikiside doğru ise “true” değeri döndürür. Yukarıdaki örnekte “1″===true “1″‘in tipi string ve diğerinin boolean olduğu için tip karşılaştırması false olarak cevap döner ve ekrana “false” yazar.

5 Responses to “Javascript == ve === arasındaki fark”

  1. Ahmet BÜTÜN says:

    Cihan merhaba,

    Yazını okuduğumda ufak bir nokta gözüme ilişti.

    ” Yukarıdaki örnekte “1″===true “1″‘in tipi string ve diğerinin boolean olduğu için tip karşılaştırması false olarak cevap döner ve ekrana “false” yazar. ” ifadesi bence hatalı olmuş. Burada “1″ in tipi String değil bir “Number” dır.

    Yani ifade şöyle olmalıydı,

    ” Yukarıdaki örnekte “1″===true “1″‘in tipi Number ve diğerinin boolean olduğu için tip karşılaştırması false olarak cevap döner ve ekrana “false” yazar. ”

    selamlar,

  2. M. Cihat Altuntaş says:

    Selam Ahmet,

    Uyarını okuduktan sonra yanlış mı diye tekrar kontrol ettim ama bir problem göremedim. Tırnak içerisinde “1″‘in tipi string olması lazım burda bir hata göremiyorum. Linkteki gibi örnekte alert(typeof “1″) yazdığımızda ekrana “string” yazar. Örnek.

    Selamlar..

  3. Ahmet BÜTÜN says:

    Cihan selam,

    “1″ elbett string türünde, benim söylemeye çalıştığım şey,

    var b=true===1;

    ifadesini açıklarken, == nin aksine burada hem tip hem değer kontrol edilir demişsin ya, burada “1″ in tipi string diğeri de boolean olduğu için tip karşılaştırması false döner demişsin. Ben de diyorum ki yukarıdaki ifadede “1″ in tipi string değil number’dır. Bu nedenle number!=boolean olduğu için false döner (string!=boolean olduğu için değil)

    umarım anlatabilmişimdir.

    Örnek
    http://jsfiddle.net/MjQGf/

  4. Seval U. says:

    Hocam === operatörünün adı identical, == operatörünün adı ise equal. Farklarını güzel açıklamışsınız, PHP’de de aynı şey geçerli. Ben genelde bir değerin false olup olmadığını karşılaştırırken === kullanıyorum. Geçen de bir string’in empty olup olmadığını nasıl daha düzgün yaparız diye düşünürken bu iki operatörü denedim, şu linkten de benim yaptığım teste ulaşılabilir: http://chocotech.blogspot.com/2013/01/php-checking-if-string-is-empty.html

  5. Murat Köker says:

    Açıklayıcı bir örnek olmuş :)

Leave a Reply



Social Widgets powered by AB-WebLog.com.