Skip to content

Commit f3e5637

Browse files
committed
Translated types/equality.
1 parent 8ef8ae9 commit f3e5637

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

doc/tr/types/equality.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
## Eşitlik ve Karşılaştırmalar
2+
3+
JavaScript'de nesnelerin değerlerinin eşitliğini kontrol etmenin iki farklı yolu
4+
vardır.
5+
6+
### Eşittir operatörü
7+
8+
Eşittir operatörü iki adet eşittir işaretinden oluşur: `==`
9+
10+
JavaScript *weakly typed* bir dildir, bu nedenle, eşittir operatörü ile
11+
değişkenleri karşılaştırırken **tip dönüşümü** yapar.
12+
13+
"" == "0" // false
14+
0 == "" // true
15+
0 == "0" // true
16+
false == "false" // false
17+
false == "0" // true
18+
false == undefined // false
19+
false == null // false
20+
null == undefined // true
21+
" \t\r\n" == 0 // true
22+
23+
Yukarıdaki tablo tip dönüşümünün sonuçlarını verir, ve `==` kullanımının kötü
24+
bir uygulama olarak değerlendirilmesinin başlıca sebebidir. Bu karmaşık dönüşüm
25+
kuralları tespit edilmesi zor hatalara neden olur.
26+
27+
Ayrıca tip dönüşümü işin içine girdiğinde performans üzerinde de olumsuz etkisi
28+
olur; mesela, bir katarın bir sayı ile karşılaştırılabilmesi için önce bir
29+
sayıya dönüştürülmesi gerekir.
30+
31+
### Kesin eşitlik operatörü
32+
33+
Kesin eşitlik operatörü **üç adet** eşittir işaretinden oluşur: `===`
34+
35+
Eşitlik operatörünün aksine, keşin eşitlik operatörü karşılaştırdığı değerler
36+
arasında tip dönüşümü **yapmaz**.
37+
38+
"" === "0" // false
39+
0 === "" // false
40+
0 === "0" // false
41+
false === "false" // false
42+
false === "0" // false
43+
false === undefined // false
44+
false === null // false
45+
null === undefined // false
46+
" \t\r\n" === 0 // false
47+
48+
Yukarıdaki sonuçlar hem daha anlaşılırdır, hem de progamdaki hataların erkenden
49+
ortaya çıkmasını sağlar. Bu programı bir miktar sağlamlaştırır ve ayrıca
50+
karşılaştırılan değerlerin farklı tiplerden olması durumunda performansı da
51+
artırır.
52+
53+
### Nesneleri karşılaştırmak
54+
55+
Hem `==` hem de `===` operatörlerinin **eşitlik** operatörü olarak
56+
adlandırılmasına rağmen, değerlerden en azından birinin bir `Object` olması
57+
durumunda farklı davranış gösterirler.
58+
59+
{} === {}; // false
60+
new String('foo') === 'foo'; // false
61+
new Number(10) === 10; // false
62+
var foo = {};
63+
foo === foo; // true
64+
65+
Bu durumda her iki operatör de eşitlik **değil** **aynılık** karşılaştırması
66+
yapar; yani, terimlerin aynı nesnenin **örnekleri** olup olmadığını kontrol
67+
ederler, tıpkı Python dilindeki `is` ve C dilindeki gösterici karşılaştırması
68+
gibi.
69+
70+
### Sonuç
71+
72+
Sadece **kesin eşitlik** operatörünün kullanılması şiddetle tavsiye edilir.
73+
Tip dönüşümü yapılmasının gerekli olduğu durumlarda, bu [açıkça](#types.casting)
74+
yapılmalıdır ve dilin karmaşık dönüşüm kurallarına bırakılmamalıdır.
75+

0 commit comments

Comments
 (0)