JavaScript En İyi Uygulamaları

Genel değişkenlerden kaçının,new,===,eval()

Genel değişkenlerden kaçının

Mümkün olduğunca genel değişkenleri az kullanmaya çalışın.

Tüm veri türlerini, nesneleri ve fonksiyonları içerir.

Genel değişkenler ve fonksiyonlar diğer betikler tarafından üst üste gelebilir.

Yerel değişkeni kullanın ve nasıl kullanılacağını öğreninKapanış

Her zaman yerel değişken olarak deklare edilmelidir

Fonksiyonda kullanılan tüm değişkenleryereldeğişken

yerel değişkenzorunludurtarafından var Deklare etmek için anahtar kelimeler kullanılmazsa,它们将变成全局变量。

Sıkı mod genel değişkenlerin olmamasını izin vermez.

Üstte deklare etme

İyi bir kodlama alışkanlığı, tüm deklareleri her bir betik veya fonksiyonun üstüne koymaktır.

Bu şekilde yapmanın avantajı şudur:

  • Daha temiz kod elde edilir
  • Yerel değişkenleri bulmak için iyi bir konum sağlar
  • Gerekli olmayan genel değişkenlerden kaçınmayı kolaylaştırır
  • Gerekli olmayan yeniden deklare etme olasılığını azaltır
// Üstte deklare edilebilir
var firstName, lastName, price, discount, fullPrice;
// Daha sonra kullanılacak
firstName = "Bill";
lastName = "Gates";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;

Döngü değişkenleri için de kullanılabilir:

// Üstte deklare edilebilir
var i;
// Daha sonra kullanılacak
for (i = 0; i < 5; i++)  {

Varsayılan olarak, JavaScript tüm deklareleri en üstte taşıyacaktır (JavaScript yükseltme).

变量 başlatma

Değişkenleri tanımlarken initialization yapma alışkanlığı iyi bir alışkanlıktır.

Bu şekilde yapmanın avantajı şudur:

  • Daha temiz kod
  • Değişkenleri ayrı bir yerde initialization yapın
  • Tanımlanmamış değerlerden kaçının
// Başlangıçta tanımlama ve initialization yapın
var firstName = "",
    lastName  = "",
    price = 0,
    discount = 0,
    fullPrice  = 0,
    myArray = [],
    myObject = {};

Değişken initialization bize beklenen kullanım ve beklenen veri türünü anlamamıza yardımcı olur.

Sayı, string veya boolean nesneleri tanımlamayın

Her zaman sayıları, string veya boolean değerleri temel değerler olarak, nesneler olarak değil olarak düşünmelisiniz.

Bu türleri nesne olarak tanımlarsanız, çalışma hızını yavaşlatır ve hoş olmayan yan etkiler yaratır:

Cümle. Bunu gerekli gördüğünüzde.

var x = "Bill";             
var y = new String("Bill");
(x === y) // Sonuç false, çünkü x string, y ise nesnedir.

Kişisel olarak deneyin

veya hatta daha kötü:

Cümle. Bunu gerekli gördüğünüzde.

var x = new String("Bill");             
var y = new String("Bill");
(x == y) // Sonuç false, çünkü nesneleri karşılaştıramazsınız.

Kişisel olarak deneyin

new Object() kullanmayın

  • new Object() yerine {} kullanın
  • new String() yerine "" kullanın
  • new Number() yerine 0 kullanın
  • new Boolean() yerine false kullanın
  • new Array() yerine [] kullanın
  • /()/ kullanarak new RegExp() yerine
  • function (){} kullanarak new Function() yerine

Cümle. Bunu gerekli gördüğünüzde.

var x1 = {};           // Yeni nesne
var x2 = "";           // Yeni temel string değer
var x3 = 0;            // Yeni temel numarik değer
var x4 = false;        // Yeni temel boolean değer
var x5 = [];           // Yeni dizgi nesnesi
var x6 = /()/;         // Yeni düzenli ifade
var x7 = function(){}; // Yeni fonksiyon nesnesi

Kişisel olarak deneyin

Otomatik tür dönüşümünü fark etmelisiniz

Sayıların beklenmedik şekilde stringe dönüştüğünü fark etmelisiniz veya NaN(Not a Number)。

JavaScript gevşe tür. Değişkenler farklı veri türlerini içerebilir ve değişkenler veri türlerini değiştirebilir:

Cümle. Bunu gerekli gördüğünüzde.

var x = "Hello";     // typeof x dizge
x = 5;               // typeof x'yi sayısal olarak değiştir

Kişisel olarak deneyin

Matematiksel işlemler yapılırken, JavaScript sayısal değerleri dizgeye dönüştürebilir:

Cümle. Bunu gerekli gördüğünüzde.

var x = 5 + 7;       // x.valueOf() 12, typeof x sayısal
var x = 5 + "7";     // x.valueOf() 57, typeof x dizge
var x = "5" + 7;     // x.valueOf() 57, typeof x dizge
var x = 5 - 7;       // x.valueOf() -2, typeof x sayısal
var x = 5 - "7";     // x.valueOf() -2, typeof x sayısal
var x = "5" - 7;     // x.valueOf() -2, typeof x sayısal
var x = 5 - "x";     // x.valueOf() NaN, typeof x sayısal

Kişisel olarak deneyin

Dizge ile dizge çıkarıldığında hata vermez, aksine şu şekilde döner: NaN(Not a Number):

Cümle. Bunu gerekli gördüğünüzde.

"Hello" - "Dolly"    // NaN döner

Kişisel olarak deneyin

=== ile karşılaştırma kullanın

== Karşılaştırma operatörleri, karşılamadan önce tür dönüşümü yapar (türleri eşleştirir).

=== İşlev operatörleri, değerleri ve türleri zorunlu olarak karşılaştırır:

Cümle. Bunu gerekli gördüğünüzde.

0 == "";        // true
1 == "1";       // true
1 == true;      // true
0 === "";       // false
1 === "1";      // false
1 === true;     // false

Kişisel olarak deneyin

Parameter Defaults

Eğer bir fonksiyon çağrılırken bir parametre eksikse, bu eksik parametrenin değeri şu şekilde ayarlanır: undefined

undefined Değer, kodunuzu bozabilir. Parametrelere varsayılan değerler ayarlamak alışkanlığı iyi bir şeydir.

Cümle. Bunu gerekli gördüğünüzde.

function myFunction(x, y) {
    if (y === undefined) {
        y = 0;
    }
}

Kişisel olarak deneyin

y = 0;LütfenFonksiyon Parametreleri

Bu bölümde fonksiyon parametreleri hakkında daha fazla bilgi edinin.

varsayılan ile switch sonunu doldurun kullanın varsayılan sonunu doldurmak için switch

Cümle. Bunu gerekli gördüğünüzde.

Örnek
    switch (new Date().getDay()) {
        davranış 0:
        kes:
    davranış 1:
        day = "Pazar";
         kes:
    davranış 2:
        day = "Pazartesi";
         kes:
    davranış 3:
        day = "Çarşamba";
         kes:
    davranış 4:
        day = "Perşembe";
         kes:
    davranış 5:
        day = "Cuma";
         kes:
    davranış 6:
        day = "Cumartesi";
         kes:
    varsayılan:
        day = "Bilinmiyor";
} 

Kişisel olarak deneyin

eval() kullanmaktan kaçının

eval() Fonksiyon, metni kod olarak çalıştırmak için kullanılır. Çoğu durumda, bunu kullanmak gerekmez.

Herhangi bir kodun çalışmasına izin verdiğiniz için, bu aynı zamanda güvenlik sorunları anlamına da gelir.