JS körü körüne kullanmayın ===

Tam metin 3228 Kelimeler, tahmini öğrenme süresi 10 dakika

Kaynak: Pexels

== ile karşılaştırıldığında, birçok geliştirici === kullanmayı tercih ediyor. Neden?

Çoğu çevrimiçi eğitim, JavaScript'in zorla dönüştürülmesinin çok karmaşık ve öngörülemez olduğunu açıkladı, bu nedenle her zaman === kullanılması önerilir.

İnternetteki bazı öğreticilerdeki yanlış anlamalar halkı yanıltmıştır ve birçok yazılı olmayan kural ve popüler web sitesi her zaman === kullanmanızı önerir.

Tüm bunlar, birçok programcının bazı programlama dillerinden vazgeçmesine ve bunları derin anlayış ve kavrayış yerine kusurlar olarak görmesine neden oldu.

Aşağıdaki iki durum, == kullanmanın en iyi olduğu zamanı göstermektedir.

1. Boşluk testi yapın

eğer (x == null) vsif (x === tanımsız || x === boş)

2. Kullanıcı girişini okuyun

let userInput = document.getElementById ('miktar'); let miktar = 999; if (amount == userInput) vsif (amout === Number (userInput))

Bu makale, konu hakkında derinlemesine bir anlayış kazanacak, ikisi arasındaki farkları keşfedecek, zorunlu dönüştürme kavramını anlayacak, bazı klasik vakaları inceleyecek ve son olarak bir karar vermemiz için bize rehberlik edecek yönergeleri bulacaktır.

Giriş

Javascript kodlama dilinde, "eşit" ilişkiyi temsil eden iki operatör vardır.

1. === - Katı eşitlik karşılaştırmasına üçlü eşitlik karşılaştırması da denir.

2. == - Soyut eşitlik karşılaştırması aynı zamanda çift eşitlik karşılaştırması olarak da adlandırılır.

=== kullanmaya alışkınım, çünkü birisi bana =='dan daha iyi ve daha gelişmiş olduğunu söyledi ve tembel bir adam olarak bu ifadeyi kasıtlı olarak doğrulamadım. === kullanmayı çok uygun buluyorum.

"You Don't Understand JS" kitabının yazarı Kyle (@getfiy) tarafından FrontendMasters'da yayınlanan "JavaScript'in Derin Temelleri" ni okuyana kadar fikrim oldukça yanlıştı.

Profesyonel bir programcı olarak, günlük işlerimde kullandığım operatörler hakkında derinlemesine düşünmedim. Bu acı verici gerçek, ilgili bilgiyi geniş çapta yaymaya ve insanların yazdığımız kodu anlamasına ve daha fazla dikkat etmesine karar vermeme neden oldu.

Gerçeğin kaynağı

Gerçeği anlamak önemlidir. Mozilla'da değil, W3schools web sitesinde değil, ==='nin =='dan daha iyi olduğunu iddia eden yüzlerce makalede yer almıyor ve bu makalede yer almıyor.

Gerçek, JavaScript çalışma modunun açıklamasını bulabileceğiniz JavaScript dil spesifikasyonundadır.

Kaynak: Pexels

Efsaneleri ortadan kaldırın

1. == yalnızca değerlerin eşit olup olmadığını kontrol etmek için kullanılır (tanım daha gevşek)

Spesifikasyonda == net bir tanıma sahiptir, buradan anlaşılabilir ki, algoritmaya devam etmeden önce yapmamız gereken ilk şey aslında değişken türünü doğrulamaktır.

2. === Değeri ve değişken türünü kontrol edin (kesin karşılaştırma)

Ayrıca, === şartnamesinden, değişken tipinin ilk olarak kontrol edilmesini gerektirdiği ve türler farklıysa, değerleri karşılaştırmaya gerek olmadığı da görülebilir.

== ve === arasındaki gerçek fark, dönüştürmenin zorlanıp zorlanmayacağıdır.

JavaScript'te zorlama

Zorlama veya tür dönüştürme, herhangi bir programlama dilinin temellerinden biridir. Bu, özellikle JavaScript gibi dinamik olarak yazılmış diller için önemlidir, çünkü derleyici, değişken türü değişirse sizi uyarmaz.

Zorunlu tip dönüşümünü anladıktan sonra, kodu JavaScript gibi bir şekilde yorumlayabiliriz, bu da bize daha fazla çalışma alanı sağlar ve hataları en aza indirir.

Açık baskı

Programcı açık dönüşümü zorlamak için aşağıdaki yöntemi kullandığında, değişkenin türü değişecektir.

Boolean (), Number (), BigInt (), String (), Object ()

Örneğin:

let x = 'foo'; typeof x // stringx = Boolean ('foo') typeof x // boolean

Örtük baskı

JavaScript'te değişkenler zayıf bir şekilde yazılmıştır, bu da otomatik olarak dönüştürülebilecekleri anlamına gelir (örtük zorlama). Toplama, çıkarma, çarpma ve bölme işlemlerini, yürütme bağlamını veya == kullanın, örtük zorlama genellikle oluşur.

2 / '3' // '3' 3newDate () + 1'e zorlandı // 1if (x) ile biten bir tarih dizesine zorlandı // x, boolean1'e zorlandı == true // true 11 sayısına zorlandı = = 'true' // 'true', NaN`'ye çekirdeklenmiş bu $ {değişken}, dizgeye çekirdeklenecek

Örtük baskı iki ucu keskin bir kılıçtır ve onu akıllıca kullanmak okunabilirliği artırabilir ve fazlalığı azaltabilir. Anlamını yanlış anlarsanız veya işleminizde bir hata yaparsanız, hesaplamalarınız tatmin edici olmayacak ve JavaScript'i iyi çalışmadığı için şikayet edecek ve suçlayacaksınız.

Eşitlik algoritmasına giriş

Kaynak: Pexels

Soyut eşitlik karşılaştırması ==

1. X ve Y aynı türe aitse, lütfen === komutunu çalıştırın.

2. X boşsa ve Y tanımlı değilse veya tam tersi - doğrudur.

3. Biri sayı ise, diğerini sayı olmaya zorlayın.

4. Bir nesne bir nesne ise, orijinal nesneye dönüştürülmeye zorlanır.

5. Yanlış döndür

Katı eşitlik karşılaştırması ===

1. Tür-yanlış eşleşmiyorsa.

2. Tür değerle eşleşiyorsa - değerle karşılaştır, sayı değilse (NaN), yanlış döndür.

3.-0-doğru.

Klasik Kılıf

1. Aynı tür (çoğu durumda)

Türler aynıysa === ve == arasında hiçbir fark yoktur. Bu nedenle, daha anlamsal olanı kullanılmalıdır.

Bazıları şöyle diyecek: "Türün farklı olması durumunda === kullanmayı tercih ederim."

Ancak bu ifade, kaydetmek için iki kez basmak, ancak beş kez tazelemek gibi mantıksızdır. Her ihtimale karşı kodu aynı şekilde iki kez yazmıyoruz, değil mi?

2. Farklı türler (ilkeller)

Her şeyden önce, lütfen farklı türlerin, türlerin bilinmediği anlamına gelmediğini unutmayın.

Veri türü hakkında hiçbir şey bilmiyorsanız, bu, === veya == kullanıp kullanmayacağınızı tartışmadan önce koddaki sorunu çözmeniz gerektiği anlamına gelir.

Veri türleri hakkında belirli bir anlayışa sahip olmak, kodu daha derinlemesine anladığınızı gösterir, bu da hataları azaltmaya ve daha güvenilir yazılım geliştirmeye yardımcı olur.

Veri türünü tanıdıktan sonra, zorunlu dönüştürmeyi anlayarak, zorunlu dönüştürmeyi yapıp yapmamayı seçebilir ve === veya == kullanıp kullanmamaya karar verebiliriz.

Bir sayı veya dizge olabileceğini varsayalım.

Bu algoritmanın sayılar için daha uygun olduğunu unutmayın, bu yüzden Number () 'ı seçmelisiniz.

let foo = 2; let bar = 32; // sayı veya stringfoo == bar // eğer çubuk dizge ise numberfoo === Number (bar) // temelde samefoo yapmak === çubuğu // her zaman çubuk dizge olarak gelirse başarısız olur

3. Boş (geçersiz) ve tanımsız (tanımsız)

== kullanırken, null ve undefined arasında önemli bir fark yoktur.

let foo = nulllet bar = undefined; foo == bar // truefoo === bar // false

4. İlkel olmayan

Nesneler ve diziler gibi ilkel olmayanları karşılaştırmak için == veya === kullanamazsınız.

Karar kriterleri

1. Kullanılabileceği her durumda tercih edilir ==

2. == bilinen türler için kullanılabilir, tür dönüştürmeye zorlamayı seçebilirsiniz.

3. Veri türünü olabildiğince iyi bilin.

4. Türü bilmiyorsanız, lütfen == kullanmayın.

5. Türü biliyorsanız, hem === hem de ==

6. Türler eşleşmediğinde === anlamsızdır.

7. Türler eşleştiğinde, === kullanımına gerek yoktur.

Lütfen == kullanmaktan kaçının

JavaScript'teki yanlış değeri gerçekten anlamıyorsanız, aşağıdaki durumlarda == kullanmamalısınız.

== with0 veya "" veya "" == non primtives == true veya == false

sonuç olarak

Kaynak: Pexels

JavaScript'i kullanma deneyimime dayanarak, şimdiye kadar işlenecek değişkenin türünü her zaman anladım. Bilmiyorsam, istenen değişkeni seçmek için type of kullanacağım.

Burada okuyan okuyucular için dikkat edilmesi gereken dört nokta var.

1. Türü bilmiyorsanız veya bilmeniz gerekmiyorsa, === kullanmak en iyi seçimdir.

2. Türün cehaleti, kodu anlamadığınız için olabilir, lütfen kodu yeniden düzenlemeye çalışın.

3. Daha iyi kod yazmak için türü bilin.

4. Tür biliniyorsa, en iyisi == seçin, aksi takdirde === kullanın.

Okuduğunuz için teşekkürler ve umarız bu makale JavaScript anlayışınızı derinleştirmenize yardımcı olur.

Yorum Beğen Takip Et

Yapay zeka öğrenme ve geliştirmenin kuru mallarını paylaşalım

Yeniden yazdırıyorsanız, lütfen arka planda bir mesaj bırakın ve yeniden yazdırma şartnamelerine uyun

Uluslararası toplum, Çin'in savaş "salgınına" dikkat ediyor: Çin, dünyaya zaman kazandırdı
önceki
İzleyiciler, büyük şirketlerin yapay zekayı tam olarak nasıl kullandığını ve bunları pratikte nasıl uyguladığını izliyor mu?
Sonraki
Sincan'ın "salgın" rolündeki ön ve arka Jinhua doktorlarını hesaba katarak çevrimiçi ve çevrimdışı koordinasyon
Bilim ve Teknoloji Gençlik | Zhang Shifeng, Çin Bilimler Akademisi: Geç başlayın, yetişin ve yararlı bir kişi olmak için çabalayın
Çocuğunuza bir isim verin ve bir bebek adı oluşturucu oluşturmak için derin öğrenme teknolojisini kullanın
Sadece 6 ayda bir kodlama noobundan veri bilimcisine geçtim
"Naihe 2" Liu Jiaxi makyajsız göründü ve gülümsemesi hayranları tarafından övüldü
Weimob'un veritabanının silinmesini telafi etmesi 145 saat sürdü ve 150 milyon yuan kan kaybına neden oldu.
Yuhang A seviyesindeki manzara noktası, ülkedeki en güzel "retrograd" a ücretsiz olarak açıktır.
200 milyon Fransız süperstar paniğe kapılacak! 15 yaşındaki Dortmund, "gol makinesi" oldu ve 19 turda 32 gol attı
Makine çevirisinde öncü olan Jaime Carbonell vefat etti ve Carnegie Mellon Üniversitesi Dil Teknolojisi Okulu'nu kurdu.
Serin VR koltuk seçimi, Ali Damai'nin arkasındaki teknoloji lüks
Zidane tanrıları değiştirdi! İkame Rockets Barcelona'yı 110 saniyede kırdı, 80.000 Bernabéu hayranı kaynadı
Bahar çiçekleri açtığında Linwu: Manolya dallarda açar
To Top