JS Eğitimi

ANA SAYFA JS Giriş JS Nereye JS Çıktı JS İfadeleri JS Sözdizimi JS Yorumları JS Değişkenleri JS Let JS Sabiti JS Operatörleri JS Aritmetiği JS Ataması JS Veri Türleri JS Fonksiyonları JS Nesneleri JS Etkinlikleri JS Dizeleri JS Dize Yöntemleri JS Dizisi Arama JS Dize Şablonları JS Numaraları JS Numarası Yöntemleri JS Dizileri JS Dizi Yöntemleri JS Dizi Sıralaması JS Dizi Yineleme JS Dizi Sabiti JS Tarihleri JS Tarih Formatları JS Tarih Alma Yöntemleri JS Tarih Ayar Yöntemleri JS Matematik JS Rastgele JS Booleanları JS Karşılaştırmaları JS Koşulları JS Anahtarı JS Döngüsü İçin JS Döngüsü İçin JS Döngüsü JS Döngüsü JS Arası JS Yinelenebilirler JS Setleri JS Haritaları JS Türü JS Tipi Dönüşüm JS Bitsel JS Normal İfade JS Hataları JS Kapsamı JS Kaldırma JS Sıkı Modu Bu Anahtar Kelimeyi JS JS Ok İşlevi JS Sınıfları JS JSON JS Hata Ayıklama JS Stil Kılavuzu JS En İyi Uygulamaları JS Hataları JS Performansı JS Ayrılmış Kelimeler

JS Sürümleri

JS Sürümleri JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Kenar JS Geçmişi

JS Nesneleri

Nesne Tanımları Nesne Özellikleri Nesne Yöntemleri Nesne Görüntüleme Nesne Erişimcileri Nesne Oluşturucuları Nesne Prototipleri Nesne Yinelenebilirler Nesne Kümeleri Nesne Haritaları Nesne Referansı

JS Fonksiyonları

Fonksiyon Tanımları Fonksiyon Parametreleri Fonksiyon Çağırma İşlev Çağrısı İşlev Uygula Fonksiyon Kapanışları

JS Sınıfları

Sınıf Tanıtımı Sınıf Kalıtımı Sınıf Statik

JS Zaman uyumsuz

JS Geri Aramaları JS Asenkron JS Sözleri JS Zaman uyumsuz/Bekliyor

JS HTML DOM'si

DOM Tanıtımı DOM Yöntemleri DOM Belgesi DOM Öğeleri DOM HTML'si DOM Formları DOM CSS'si DOM Animasyonları DOM Olayları DOM Olay Dinleyicisi DOM Gezinme DOM Düğümleri DOM Koleksiyonları DOM Düğüm Listeleri

JS Tarayıcı Malzeme Listesi

JS Penceresi JS Ekranı JS Konumu JS Geçmişi JS Navigatörü JS Açılır Pencere Uyarısı JS Zamanlaması JS Çerezleri

JS Web API'leri

Web API'sine Giriş Web Formları API'sı Web Geçmişi API'si Web Depolama API'sı Web Çalışanı API'si Web Getirme API'sı Web Coğrafi Konum API'sı

JS AJAX

AJAX'a Giriş AJAX XMLHttp AJAX İsteği AJAX Yanıtı AJAX XML Dosyası AJAX PHP AJAX ASP AJAX Veritabanı AJAX Uygulamaları AJAX Örnekleri

JS JSON

JSON'a Giriş JSON Sözdizimi JSON'a karşı XML JSON Veri Türleri JSON Ayrıştırma JSON Stringify JSON Nesneleri JSON Dizileri JSON Sunucusu JSON PHP JSON HTML'si JSON JSONP

JS ve jQuery

jQuery Seçiciler jQuery HTML'si jQuery CSS'si jQuery DOM'si

JS Grafikleri

JS Grafikleri JS Tuval JS Konusu JS Chart.js JS Google Grafiği JS D3.js

JS Örnekleri

JS Örnekleri JS HTML DOM'si JS HTML Girişi JS HTML Nesneleri JS HTML Olayları JS Tarayıcı JS Editörü JS Alıştırmaları JS Testi JS Sertifikası

JS Referansları

JavaScript Nesneleri HTML DOM Nesneleri


JavaScript Genel Hataları


Bu bölüm bazı yaygın JavaScript hatalarına dikkat çekiyor.


Atama Operatörünü Yanlışlıkla Kullanma

Bir programcı yanlışlıkla bir if ifadesinde =karşılaştırma operatörü ( ) yerine bir atama operatörü ( ) kullanırsa, JavaScript programları beklenmedik sonuçlar üretebilir .==

Bu ififade (beklendiği gibi) döner falseçünkü x, 10'a eşit değildir:

let x = 0;
if (x == 10)

Bu ififade döndürülür true(belki beklendiği gibi değildir), çünkü 10 doğrudur:

let x = 0;
if (x = 10)

Bu ifade (beklendiği gibi olmayabilir) ifdöner , çünkü 0 yanlıştır:false

let x = 0;
if (x = 0)

Bir atama her zaman atamanın değerini döndürür.


Gevşek Karşılaştırma Beklemek

Düzenli karşılaştırmada, veri türü önemli değildir. Bu ififade doğru döndürür:

let x = 10;
let y = "10";
if (x == y)

Kesin karşılaştırmada, veri türü önemlidir. Bu ififade false döndürür:

let x = 10;
let y = "10";
if (x === y)

switchİfadelerin katı karşılaştırmalar kullandığını unutmak yaygın bir hatadır :

Bu case switchbir uyarı görüntüler:

let x = 10;
switch(x) {
  case 10: alert("Hello");
}

Bu case switchbir uyarı göstermez:

let x = 10;
switch(x) {
  case "10": alert("Hello");
}


Kafa karıştırıcı Toplama ve Birleştirme

Toplama , sayıların eklenmesiyle ilgilidir .

Birleştirme , dizeler eklemekle ilgilidir .

JavaScript'te her iki işlem de aynı +operatörü kullanır.

Bu nedenle, bir sayıyı sayı olarak eklemek, bir sayıyı dize olarak eklemekten farklı bir sonuç üretecektir:

let x = 10;
x = 10 + 5;       // Now x is 15

let y = 10;
y += "5";        // Now y is "105"

İki değişken eklerken sonucu tahmin etmek zor olabilir:

let x = 10;
let y = 5;
let z = x + y;     // Now z is 15

let x = 10;
let y = "5";
let z = x + y;     // Now z is "105"

Yanlış anlama Yüzer

JavaScript'teki tüm sayılar 64-bit Kayan noktalı sayılar (Floats) olarak saklanır.

JavaScript dahil tüm programlama dilleri, kesin kayan nokta değerleriyle ilgili zorluklara sahiptir:

let x = 0.1;
let y = 0.2;
let z = x + y            // the result in z will not be 0.3

Yukarıdaki sorunu çözmek için çarpmaya ve bölmeye yardımcı olur:

Örnek

let z = (x * 10 + y * 10) / 10;       // z will be 0.3

JavaScript Dizesini Kırmak

JavaScript, bir ifadeyi iki satıra ayırmanıza izin verir:

örnek 1

let x =
"Hello World!";

Ancak, bir dizenin ortasındaki bir ifadeyi kırmak işe yaramaz:

Örnek 2

let x = "Hello
World!";

Bir dizede bir ifadeyi kesmeniz gerekiyorsa "ters eğik çizgi" kullanmalısınız:

Örnek 3

let x = "Hello \
World!";

Noktalı virgülü yanlış yerleştirme

Yanlış yerleştirilmiş bir noktalı virgül nedeniyle, bu kod bloğu, x değerinden bağımsız olarak yürütülür:

if (x == 19);
{
  // code block 
}

İade Bildirimini Kırmak

Bir satırın sonunda bir ifadeyi otomatik olarak kapatmak varsayılan bir JavaScript davranışıdır.

Bu nedenle, bu iki örnek aynı sonucu verecektir:

örnek 1

function myFunction(a) {
  let power = 10 
  return a * power
}

Örnek 2

function myFunction(a) {
  let power = 10;
  return a * power;
}

JavaScript ayrıca bir ifadeyi iki satıra ayırmanıza da izin verir.

Bu nedenle, örnek 3 de aynı sonucu verecektir:

Örnek 3

function myFunction(a) {
  let
  power = 10; 
  return a * power;
}

Ancak, return ifadesini aşağıdaki gibi iki satıra bölerseniz ne olur:

Örnek 4

function myFunction(a) {
  let
  power = 10; 
  return
  a * power;
}

İşlev geri dönecek undefined!

Niye ya? JavaScript, şunu demek istediğinizi düşündüğü için:

Örnek 5

function myFunction(a) {
  let
  power = 10; 
  return;
  a * power;
}

Açıklama

Bir ifade aşağıdaki gibi eksikse:

let

JavaScript, sonraki satırı okuyarak ifadeyi tamamlamaya çalışacaktır:

power = 10;

Ancak bu ifade tamamlandığından:

return

JavaScript otomatik olarak şu şekilde kapatacaktır:

return;

Bunun nedeni, JavaScript'te ifadeleri noktalı virgülle kapatmak (bitirmek) isteğe bağlıdır.

JavaScript, tam bir ifade olduğu için satırın sonundaki return ifadesini kapatacaktır.

Bir return ifadesini asla bozmayın.


Dizilere Adlandırılmış Dizinlerle Erişme

Birçok programlama dili, adlandırılmış dizinlere sahip dizileri destekler.

Adlandırılmış dizinlere sahip dizilere ilişkisel diziler (veya karmalar) denir.

JavaScript, adlandırılmış dizinlere sahip dizileri desteklemez .

JavaScript'te diziler numaralı dizinleri kullanır :  

Örnek

const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
person.length;       // person.length will return 3
person[0];           // person[0] will return "John"

JavaScript'te nesneler adlandırılmış dizinleri kullanır .

Adlandırılmış bir dizin kullanırsanız, bir diziye erişirken JavaScript diziyi standart bir nesne olarak yeniden tanımlar.

Otomatik yeniden tanımlamadan sonra, dizi yöntemleri ve özellikleri tanımsız veya yanlış sonuçlar üretecektir:

Örnek:

const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length;      // person.length will return 0
person[0];          // person[0] will return undefined

Tanımları Virgülle Bitirmek

Nesne ve dizi tanımında sondaki virgüller ECMAScript 5'te yasaldır.

Nesne Örneği:

person = {firstName:"John", lastName:"Doe", age:46,}

Dizi Örneği:

points = [40, 100, 1, 5, 25, 10,];

UYARI !!

Internet Explorer 8 çökecek.

JSON, sondaki virgüllere izin vermez.

JSON:

person = {"firstName":"John", "lastName":"Doe", "age":46}

JSON:

points = [40, 100, 1, 5, 25, 10];

Tanımsız, Boş Değil

JavaScript nesneleri, değişkenleri, özellikleri ve yöntemleri olabilir undefined.

Ayrıca, boş JavaScript nesnelerinin değeri olabilir null.

Bu, bir nesnenin boş olup olmadığını test etmeyi biraz zorlaştırabilir.

You can test if an object exists by testing if the type is undefined:

Example:

if (typeof myObj === "undefined") 

But you cannot test if an object is null, because this will throw an error if the object is undefined:

Incorrect:

if (myObj === null) 

To solve this problem, you must test if an object is not null, and not undefined.

But this can still throw an error:

Incorrect:

if (myObj !== null && typeof myObj !== "undefined") 

Because of this, you must test for not undefined before you can test for not null:

Correct:

if (typeof myObj !== "undefined" && myObj !== null)