JavaScript'in kötü tarafları
İşte JavaScript'in bilmeniz gereken bazı kötü (anlaşılmaz) tarafları.
Not: TypeScript, JavaScript'in süpersetidir. Aslında derleyiciler/IDE'ler tarafından kullanılan dokümantasyonlu halidir ;)
Null ve Undefined
Gerçek şu ki ikisiyle de uğraşmanız gerekecektir. İkisi için de ==
ile kontrol edelim.
/// bar aşağıdakilerden biri iken `foo.bar == undefined` yaptığınızı düşünün:
console.log(undefined == undefined); // true
console.log(null == undefined); // true
console.log(0 == undefined); // false
console.log('' == undefined); // false
console.log(false == undefined); // false
Tavsiyem undefined
veya null
, ikisi için de == null
ile kontrol etmelisiniz. Genellikle bu ikisi arasında bir ayrım yapmak istemezsiniz.
undefined
Hatırlarsanız == null
'u nasıl kullanmanız gerektiğini söylemiştim. Tabii ki kullanacaksınız (çünkü ben öyle söyledim ^). Kök seviyesindeki şeyler için kullanmayın. Katı modda (strict mode) eğer foo
kullanırsanız ve foo
tanımlanmamış (undefined) ise, ReferenceError
hatası alırsınız ve tüm çağrı kümeniz bozulur.
Katı mod (strict mode) kullanmalısınız ... ve aslında TS derleyicisi eğer modül kullanırsanız sizin için bunu ekleyecektir ... daha fazlası kitabın ilerleyen bölümlerinde var yani şu anda açık şekilde anlamış olmanız gerekmez :)
Yani bir değişkenin global düzeyde tanımlanıp tanımlanmadığını kontrol etmek için typeof
kullanılır:
if (typeof someglobal !== 'undefined') {
// someglobal kullanımı şu anda güvenli
console.log(someglobal);
}
this
Bir fonksiyon içindeki this
anahtar sözcüğüne herhangi bir erişim, aslında fonksiyonun nasıl çağrıldığına göre kontrol edilir. Genellikle çağrı bağlamı (calling context)
olarak bahsedilir.
Aşağıdaki örnek bunu açıklamaktadır:
function foo() {
console.log(this);
}
foo(); // global olarak çıktı verir, örneğin tarayıcılardaki `window`
let bar = {
foo
}
bar.foo(); // `bar` üzerinde çağrıldığında `foo` olarak `bar` çıktısı verir
Bu nedenle this
kullanımınızda dikkatli olun . Eğer çağırdığınız bağlamda gelen sınıfın icindeki this
'ten kopmak isterseniz ok fonksiyonlarını kullanın, daha fazlası.
Sıradaki
İşte bu. Bunlar JavaScript'in bazı yanlış anlaşılan parçalarıdır ve hala bu dilde yeni olan geliştiriciler için çeşitli hatalarla sonuçlanır 🌹.