JavaScript En İyi Uygulamaları
Global değişkenlerden kaçının, kaçının new
, kaçının ==
, kaçınıneval()
Global Değişkenlerden Kaçının
Global değişkenlerin kullanımını en aza indirin.
Bu, tüm veri türlerini, nesneleri ve işlevleri içerir.
Global değişkenler ve işlevlerin üzerine diğer komut dosyaları yazılabilir.
Bunun yerine yerel değişkenleri kullanın ve kapanışları nasıl kullanacağınızı öğrenin .
Her Zaman Yerel Değişkenleri Bildir
Bir fonksiyonda kullanılan tüm değişkenler yerel değişkenler olarak bildirilmelidir.
Yerel değişkenler anahtar kelime veya anahtar
kelime veya anahtar kelime ile bildirilmelidir , aksi takdirde global değişkenler haline gelirler.var
let
const
Katı mod, bildirilmemiş değişkenlere izin vermez.
Üstteki Beyanlar
Tüm bildirimleri her komut dosyasının veya işlevin en üstüne koymak iyi bir kodlama uygulamasıdır.
Bu irade:
- Daha temiz kod ver
- Yerel değişkenleri aramak için tek bir yer sağlayın
- İstenmeyen (zımni) global değişkenlerden kaçınmayı kolaylaştırın
- İstenmeyen yeniden bildirim olasılığını azaltın
// Declare at the beginning
let firstName, lastName, price, discount, fullPrice;
// Use later
firstName = "John";
lastName = "Doe";
price = 19.90;
discount = 0.10;
fullPrice = price - discount;
Bu aynı zamanda döngü değişkenleri için de geçerlidir:
for (let i = 0; i < 5; i++)
{
Değişkenleri Başlat
Değişkenleri tanımladığınızda başlatmak iyi bir kodlama uygulamasıdır.
Bu irade:
- Daha temiz kod ver
- Değişkenleri başlatmak için tek bir yer sağlayın
- Tanımsız değerlerden kaçının
// Declare and initiate at the beginning
let firstName = "",
let lastName = "",
let price = 0,
let discount = 0,
let fullPrice = 0,
const myArray = [],
const myObject = {};
Değişkenlerin başlatılması, amaçlanan kullanım (ve amaçlanan veri türü) hakkında bir fikir sağlar.
Const ile Nesneleri Bildirin
Nesneleri const ile bildirmek, herhangi bir kazara tür değişikliğini önleyecektir:
Örnek
let car = {type:"Fiat", model:"500", color:"white"};
car = "Fiat"; // Changes object to string
const car = {type:"Fiat", model:"500", color:"white"};
car = "Fiat"; // Not possible
Dizileri const ile bildirin
Dizileri const ile bildirmek, herhangi bir kazara tür değişikliğini önleyecektir:
Örnek
let cars = ["Saab", "Volvo", "BMW"];
cars = 3; // Changes array to number
const cars = ["Saab", "Volvo", "BMW"];
cars = 3; // Not possible
Yeni Nesne Kullanmayın()
""
yerine kullannew String()
0
yerine kullannew Number()
false
yerine kullannew Boolean()
{}
yerine kullannew Object()
[]
yerine kullannew Array()
/()/
yerine kullannew RegExp()
function (){}
yerine kullannew Function()
Örnek
let x1 = ""; // new primitive string
let x2 = 0; // new primitive number
let x3 = false; // new primitive boolean
const x4 = {}; // new object
const x5 = []; // new array object
const x6 = /()/; // new regexp object
const x7 = function(){}; // new function object
Otomatik Tür Dönüşümlerine Dikkat Edin
JavaScript gevşek yazılmış.
Bir değişken tüm veri türlerini içerebilir.
Bir değişken, veri türünü değiştirebilir:
Örnek
let x = "Hello"; // typeof x is a string
x = 5; // changes typeof x to a number
Sayıların yanlışlıkla dizelere veya NaN
(Sayı Değil) dönüştürülebileceğine dikkat edin.
Matematiksel işlemler yaparken, JavaScript sayıları dizgelere dönüştürebilir:
Örnek
let x = 5 + 7; // x.valueOf() is 12, typeof x is a number
let x = 5 + "7"; // x.valueOf() is 57, typeof x is a string
let x = "5" + 7; // x.valueOf() is 57, typeof x is a string
let x = 5 - 7; // x.valueOf() is -2, typeof x is a number
let x = 5 - "7"; // x.valueOf() is -2, typeof x is a number
let x = "5" - 7; // x.valueOf() is -2, typeof x is a number
let x = 5 - "x"; // x.valueOf() is NaN, typeof x is a number
Bir dizeden bir dize çıkarmak, bir hata oluşturmaz, ancak şunu döndürür NaN
(Sayı Değil):
Örnek
"Hello" - "Dolly" // returns NaN
Kullan === Karşılaştırma
Karşılaştırma operatörü , ==
karşılaştırmadan önce her zaman (eşleşen türlere) dönüştürür.
Operatör , ===
değerlerin ve türün karşılaştırmasını zorlar:
Örnek
0 == ""; // true
1 == "1"; // true
1 == true; // true
0 === ""; // false
1 === "1"; // false
1 === true;
// false
Parametre Varsayılanlarını Kullan
Bir işlev eksik bir argümanla çağrılırsa, eksik argümanın değeri olarak ayarlanır
undefined
.
Tanımsız değerler kodunuzu bozabilir. Argümanlara varsayılan değerler atamak iyi bir alışkanlıktır.
Örnek
function myFunction(x, y) {
if (y === undefined) {
y = 0;
}
}
ECMAScript 2015 , fonksiyon tanımında varsayılan parametrelere izin verir:
function (a=1, b=1) { /*function code*/ }
İşlev Parametrelerinde işlev parametreleri ve bağımsız değişkenler hakkında daha fazla bilgi edinin
Anahtarlarınızı Varsayılanlarla Sonlandırın
switch
İfadelerinizi her zaman bir ile bitirin default
. Buna gerek olmadığını düşünseniz bile.
Örnek
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
default:
day =
"Unknown";
}
Nesne Olarak Sayı, Dize ve Boole'den Kaçının
Sayıları, dizeleri veya booleanları her zaman ilkel değerler olarak ele alın. Nesneler olarak değil.
Bu türleri nesne olarak bildirmek, yürütme hızını yavaşlatır ve kötü yan etkiler üretir:
Örnek
let x = "John";
let y = new String("John");
(x === y) // is false because x is a string and y is an object.
Veya daha da kötüsü:
Örnek
let x = new String("John");
let y = new String("John");
(x == y) // is false because you cannot compare objects.
eval() kullanmaktan kaçının
İşlev eval()
, metni kod olarak çalıştırmak için kullanılır. Hemen hemen her durumda, onu kullanmak gerekli olmamalıdır.
Rasgele kodun çalıştırılmasına izin verdiği için, aynı zamanda bir güvenlik sorununu da temsil eder.