Dec 11
Javascript == ve === arasındaki fark
<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.

January 9th, 2013 at 5:44 am
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,
January 9th, 2013 at 8:45 am
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..
January 9th, 2013 at 10:45 am
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/
January 14th, 2013 at 11:47 am
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
March 27th, 2013 at 5:01 am
Açıklayıcı bir örnek olmuş