ÙØ¬Ø¨ Ø£Ù ÙÙÙ٠اÙÙÙØ¯ Ø§ÙØ®Ø§Øµ Ø¨ÙØ§ ÙØ¸ÙÙ ÙØ³Ù٠اÙÙØ±Ø§Ø¡Ø© ÙØ¯Ø± Ø§ÙØ¥Ù ÙØ§Ù.
ÙØ°Ø§ ÙÙ Ù٠اÙÙØ§Ùع ÙÙ Ø§ÙØ¨Ø±Ù جة ⦠اÙÙÙØ§Ù ب٠ÙÙ Ø© Ù Ø¹ÙØ¯Ø© Ù ÙØªØ§Ø¨Ø© اÙÙÙØ¯ Ø§ÙØ®Ø§Øµ Ø¨ÙØ§ بطرÙÙØ© صØÙØØ© Ù ÙØ§Ø¨ÙØ© ÙÙÙØ±Ø§Ø¡Ø© Ø¨ÙØ§Ø³Ø·Ø© ٠بر٠ج آخر. ÙØ°Ø§ ÙØ³Ø§Ø¹Ø¯ أسÙÙØ¨ ÙØªØ§Ø¨Ø© اÙÙÙØ¯ Ø§ÙØ¬Ùد Ø¥ÙÙ ØØ¯ ÙØ¨Ùر Ù٠ذÙÙ.
طرÙÙØ© ÙØªØ§Ø¨Ø© اÙÙÙØ¯
Ø¥ÙÙÙ ØªØ¬Ù ÙØ¹Ø© ÙØ¨Ø¹Ø¶ اÙÙÙØ§Ø¹Ø¯ اÙÙ ÙØªØ±ØØ© (Ø§ÙØ¸Ø± Ø£Ø¯ÙØ§Ù ÙÙ Ø²ÙØ¯ Ù Ù Ø§ÙØªÙاصÙÙ):
Ø§ÙØ¢Ù دعÙÙØ§ ÙÙØ§ÙØ´ اÙÙÙØ§Ø¹Ø¯ ÙØ£Ø³Ø¨Ø§Ø¨Ùا Ø¨Ø§ÙØªÙصÙÙ.
ÙØ§ ÙÙØ¬Ø¯ Ø´ÙØ¡ Ù ØØ¯Ø¯ ÙÙØ§. Ù٠٠جرد ØªÙØ¶ÙÙØ§Øª ÙØ£Ø³ÙÙØ¨ اÙÙØªØ§Ø¨Ø© Ø ÙÙØ³Øª ÙØ§ÙØ¹ÙØ§Ø¦Ø¯ Ø§ÙØ¯ÙÙÙØ©.
Ø§ÙØ£ÙÙØ§Ø³ اÙ٠عÙÙÙØ©
ÙÙ Ù Ø¹Ø¸Ù Ù Ø´Ø§Ø±ÙØ¹ Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت Ø ÙØªÙ ÙØªØ§Ø¨Ø© Ø§ÙØ£ÙÙØ§Ø³ اÙ٠عÙÙÙØ© بأسÙÙØ¨ â٠صرÙâ ٠ع ÙÙØ³ ÙØªØ عÙÙ ÙÙØ³ Ø§ÙØ³Ø·Ø± ٠ث٠اÙÙÙÙ Ø© Ø§ÙØ±Ø¦ÙØ³ÙØ© اÙÙ ÙØ§Ø¨ÙØ© â ÙÙÙØ³ عÙ٠سطر Ø¬Ø¯ÙØ¯. ÙØ¬Ø¨ Ø£ÙØ¶Ùا Ø£Ù ÙÙÙÙ ÙÙØ§Ù Ù Ø³Ø§ÙØ© ÙØ¨Ù ÙÙØ³ اÙÙØªØ Ø ÙØ§ÙتاÙÙ:
if (condition) {
// do this
// ...and that
// ...and that
}
Ø¨ÙØ§Ø¡ Ø£ØØ§Ø¯Ù Ø§ÙØ®Ø· Ù
Ø«Ùif (condition) doSomething(), ÙÙ ÙØ¶ÙØ© Ù
ÙÙ
Ø©.ÙÙ ÙØ¬Ø¨ عÙÙÙØ§ استخداÙ
Ø§ÙØ£ÙÙØ§Ø³ Ù
Ù Ø§ÙØ£Ø³Ø§Ø³Ø
Ø¥ÙÙ٠اÙÙ ØªØºÙØ±Ø§Øª Ø§ÙØªÙ تØÙ٠عÙ٠٠د٠سÙÙÙØ© ÙØ±Ø§Ø¡ØªÙا بÙÙØ³Ù:
- ð ÙÙÙÙ
اÙÙ
بتدئÙ٠بذÙÙ Ù٠بعض Ø§ÙØ£ØÙاÙ. ÙØ°Ø§ Ø³ÙØ¦! ÙØ§ ØØ§Ø¬Ø© Ø¥ÙÙ Ø§ÙØ£ÙÙØ§Ø³ اÙÙ
عÙÙÙØ©:
if (n < 0) {alert(`Power ${n} is not supported`);} - ð Ø§ÙÙØ³Ù
Ø¥Ù٠خط Ù
ÙÙØµÙ بدÙ٠أÙÙØ§Ø³. ÙØ§ ØªÙØ¹Ù ذÙÙ Ø£Ø¨Ø¯ÙØ§ Ø Ù
Ù Ø§ÙØ³ÙÙ Ø§Ø±ØªÙØ§Ø¨ خطأ Ø¹ÙØ¯ Ø¥Ø¶Ø§ÙØ© Ø®Ø·ÙØ· Ø¬Ø¯ÙØ¯Ø©:
if (n < 0) alert(`Power ${n} is not supported`); - ð Ø³Ø·Ø± ÙØ§ØØ¯ بدÙ٠أÙÙØ§Ø³ â Ù
ÙØ¨ÙÙ Ø Ø¥Ø°Ø§ ÙØ§Ù Ø§ÙØ³Ø·Ø± ÙØµÙØ±ÙØ§:
if (n < 0) alert(`Power ${n} is not supported`); - ð Ø§ÙØ®Ùار Ø§ÙØ£ÙضÙ:
if (n < 0) { alert(`Power ${n} is not supported`); }
ÙÙÙØ¯ Ù
ختصر ÙÙØºØ§ÙØ© Ø ÙÙØ³Ù
Ø Ø¨Ø³Ø·Ø± ÙØ§ØØ¯, Ù
ثا٠if (cond) return null. ÙÙÙ٠عادة Ù
ا تÙÙ٠اجزاء اÙÙÙØ¯ (Ø§ÙØ®Ùار Ø§ÙØ£Ø®Ùر) Ø£ÙØ«Ø± ÙØ§Ø¨ÙÙØ© ÙÙÙØ±Ø§Ø¡Ø©.
Ø·ÙÙ Ø§ÙØ®Ø·
ÙØ§ Ø£ØØ¯ ÙØØ¨ ÙØ±Ø§Ø¡Ø© سطر Ø£ÙÙÙ Ø·ÙÙ٠٠٠اÙÙÙØ¯. Ù Ù Ø§ÙØ£ÙØ¶Ù ØªÙØ³ÙÙ ÙØ§.
٠ثاÙ:
// backtick quotes ` تسÙ
Ø Ø¨ÙØªØ§Ø¨Ø© اÙÙØµÙص عÙÙ Ø³Ø·ÙØ± Ù
تعددة
let str = `
ECMA International's TC39 is a group of JavaScript developers,
implementers, academics, and more, collaborating with the community
to maintain and evolve the definition of JavaScript.
`;
٠باÙÙØ³Ø¨Ø© ÙØ¹Ø¨Ø§Ø±Ø©if:
if (
id === 123 &&
moonPhase === 'Waning Gibbous' &&
zodiacSign === 'Libra'
) {
letTheSorceryBegin();
}
ÙØ¬Ø¨ Ø§ÙØ§ØªÙا٠عÙÙ Ø§ÙØØ¯ Ø§ÙØ£ÙØµÙ ÙØ·ÙÙ Ø§ÙØ®Ø· عÙ٠٠ستÙ٠اÙÙØ±ÙÙ. عادة ٠ا تÙÙÙ 80 Ø£Ù 120 ØØ±ÙÙØ§.
اÙÙ Ø³Ø§ÙØ§Øª Ø§ÙØ¨Ø§Ø¯Ø¦Ø©
ÙÙØ¬Ø¯ ÙÙØ¹Ø§Ù ٠٠اÙÙ Ø³Ø§ÙØ§Øª Ø§ÙØ¨Ø§Ø¯Ø¦Ø©:
-
اÙÙ Ø³Ø§ÙØ§Øª Ø§ÙØ¨Ø§Ø¯Ø¦Ø© Ø§ÙØ£ÙÙÙØ©: 2 Ø£Ù 4 Ù Ø³Ø§ÙØ§Øª.
ÙØªÙ Ø¹Ù Ù Ù Ø³Ø§ÙØ© بادئة Ø£ÙÙÙØ© Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù Ù Ø³Ø§ÙØªÙ٠أ٠4 Ù Ø³Ø§ÙØ§Øª أ٠ر٠ز Ø¹ÙØ§Ù Ø© Ø§ÙØªØ¨ÙÙØ¨ Ø§ÙØ£ÙÙÙØ© (key Tab). Ø£ÙÙ٠ا ÙØ§Ù Ø§Ø®ØªÙØ§Ø±Ù ÙÙÙ ØØ±Ø¨ ÙØ¯ÙÙ Ø©. اÙÙ Ø³Ø§ØØ§Øª ÙÙ Ø§ÙØ£Ùثر Ø´ÙÙØ¹Ùا Ù٠اÙÙÙØª Ø§ÙØØ§Ø¶Ø±.
ÙÙØ§ÙÙ Ù ÙØ²Ø© ÙØ§ØØ¯Ø© ÙÙÙ Ø³Ø§ÙØ§Øª Ø¹Ù Ø¹ÙØ§Ù ات Ø§ÙØªØ¨ÙÙØ¨ Ø§ÙØ§ Ù Ù٠أ٠اÙÙ Ø³Ø§ÙØ§Øª ØªØ³Ù Ø Ø¨Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ù Ø³Ø§ÙØ§Øª بادئة Ø£ÙØ«Ø± ٠رÙÙØ© ٠٠ر٠ز Ø¹ÙØ§Ù Ø© Ø§ÙØªØ¨ÙÙØ¨.
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø ÙÙ ÙÙÙØ§ Ù ØØ§Ø°Ø§Ø© اÙÙ Ø¹Ø§Ù ÙØ§Øª ٠ع ÙÙØ³ اÙÙØªØ Ø Ù Ø«Ù ÙØ°Ø§:
show(parameters, aligned, // 5 spaces padding at the left one, after, another ) { // ... } -
اÙÙ Ø³Ø§ÙØ§Øª Ø§ÙØ¨Ø§Ø¯Ø¦Ø© Ø§ÙØ¹Ù ÙØ¯ÙØ©: أسطر ÙØ§Ø±ØºØ© ÙØªÙسÙÙ Ø§ÙØ´Ùرة Ø¥ÙÙ ÙØªÙ Ù ÙØ·ÙÙØ©.
ØºØ§ÙØ¨Ùا ٠ا ÙÙ ÙÙ ØªÙØ³ÙÙ Ø¯Ø§ÙØ© ÙØ§ØØ¯Ø© Ø¥ÙÙ ÙØªÙ Ù ÙØ·ÙÙØ©. Ù٠اÙÙ Ø«Ø§Ù Ø£Ø¯ÙØ§Ù Ø ÙØªÙ ØªÙØ³Ù٠تÙÙØ¦Ø© اÙÙ ØªØºÙØ±Ø§Øª ÙØ§ÙØÙÙØ© Ø§ÙØªÙØ±Ø§Ø±ÙØ© Ø§ÙØ±Ø¦ÙØ³ÙØ© ÙØ¥Ø±Ø¬Ø§Ø¹ اÙÙØªÙجة Ø¹Ù ÙØ¯ÙÙØ§:
function pow(x, n) { let result = 1; // <-- for (let i = 0; i < n; i++) { result *= x; } // <-- return result; }Ø£Ø¯Ø®Ù Ø³Ø·Ø±ÙØ§ Ø¬Ø¯ÙØ¯Ùا إضاÙÙÙØ§ ØÙØ« ÙØ³Ø§Ø¹Ø¯ عÙÙ Ø¬Ø¹Ù Ø§ÙØ±Ù ز Ø£ÙØ«Ø± ÙØ§Ø¨ÙÙØ© ÙÙÙØ±Ø§Ø¡Ø©. ÙØ¬Ø¨ Ø£ÙØ§ ÙÙÙÙ ÙÙØ§Ù Ø£ÙØ«Ø± ٠٠تسعة أسطر ٠٠اÙÙÙØ¯ بدÙÙ Ù Ø³Ø§ÙØ© بادئة Ø±Ø£Ø³ÙØ©.
اÙÙØ§ØµÙØ© اÙÙ ÙÙÙØ·Ø©
ÙØ¬Ø¨ أ٠تÙÙ٠اÙÙØ§ØµÙØ© اÙÙ ÙÙÙØ·Ø© Ù ÙØ¬Ùدة بعد Ù٠عبارة Ø ØØªÙ ÙÙ ÙØ§Ù ٠٠اÙÙ Ù Ù٠تخطÙÙØ§.
ÙÙØ§Ù ÙØºØ§Øª تÙÙÙ ÙÙÙØ§ اÙÙØ§ØµÙØ© اÙÙ ÙÙÙØ·Ø© Ø§Ø®ØªÙØ§Ø±ÙØ© ØÙÙØ§ ÙÙØ§Ø¯Ø±Ùا ٠ا ÙØªÙ Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§. ÙÙ JavaScriptØ Ø¹ÙÙ Ø§ÙØ±ØºÙ ٠٠ذÙÙØ ÙÙØ§Ù ØØ§Ùات ÙØ§ ÙØªÙ ÙÙÙØ§ ØªÙØ³Ùر ÙØ§ØµÙ Ø§ÙØ£Ø³Ø·Ø± عÙ٠أÙÙ ÙØ§ØµÙØ© Ù ÙÙÙØ·Ø© Ø Ù Ù Ø§ ÙØ¬Ø¹Ù Ø§ÙØ´Ùرة عرضة ÙÙØ£Ø®Ø·Ø§Ø¡. Ø§ÙØ¸Ø± اÙÙ Ø²ÙØ¯ ع٠ذÙÙ Ù٠اÙÙØµÙ بÙÙØ© Ø§ÙØ´ÙÙØ±Ø© Ø§ÙØ¨Ø±Ù Ø¬ÙØ©.
إذا ÙÙØª ٠بر٠ج JavaScript Ù ØªÙ Ø±Ø³ÙØ§ Ø ÙÙÙ ÙÙÙ Ø§Ø®ØªÙØ§Ø± ÙÙ Ø· ر٠ز Ø¨ÙØ§ ÙØ§ØµÙØ© Ù ÙÙÙØ·Ø© ٠ث٠StandardJS. Ø®ÙØ§Ù ذÙÙØ Ù Ù Ø§ÙØ£Ùض٠استخدا٠اÙÙÙØ§ØµÙ اÙÙ ÙÙÙØ·Ø© ÙØªØ¬Ùب Ø§ÙØ£Ø®Ø·Ø§Ø¡. ÙØ°Ø§ ÙØ¶Ø¹ ØºØ§ÙØ¨ÙØ© اÙÙ Ø·ÙØ±Ù٠اÙÙÙØ§ØµÙ اÙÙ ÙÙÙØ·Ø©.
٠ستÙÙØ§Øª Ø§ÙØªØ¹Ù Ù
ØØ§ÙÙ ØªØ¬ÙØ¨ ØªØ¯Ø§Ø®Ù Ø§ÙØªØ¹ÙÙ٠ات Ø§ÙØ¨Ø±Ù Ø¬ÙØ© Ø¨Ø¹Ù Ù Ø£ÙØ¨Ø± ٠٠اÙÙØ§Ø²Ù .
عÙ٠سبÙ٠اÙÙ
Ø«Ø§ÙØ ÙÙ Ø§ÙØÙÙØ© Ø§ÙØªÙØ±Ø§Ø±ÙØ©Ø Ù
Ù Ø§ÙØ¬Ùد Ø£ØÙاÙÙØ§ استخداÙ
عبارة continue ÙØªØ¬Ùب Ø§ÙØªØ¹Ù
Ù Ø§ÙØ²Ø§Ø¦Ø¯ Ø¹Ù Ø§ÙØØ§Ø¬Ø©.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¨Ø¯ÙØ§Ù Ù
Ù Ø¥Ø¶Ø§ÙØ© شرط if Ù
تداخ٠Ù
Ø«Ù ÙØ°Ø§:
for (let i = 0; i < 10; i++) {
if (cond) {
... // <- one more nesting level
}
}
ØªØ³ØªØ·ÙØ¹ ÙØªØ§Ø¨Ø©:
for (let i = 0; i < 10; i++) {
if (!cond) continue;
... // <- no extra nesting level
}
ÙÙ
Ù٠تطبÙÙ ÙÙØ³ Ø§ÙØ´Ø¦ باستخداÙ
if/else Ù return.
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø Ø§ÙØ¨ÙØ§Ø¡Ø§Ù Ø£Ø¯ÙØ§Ù Ù ØªØ·Ø§Ø¨ÙØ§Ù.
Ø§ÙØ®Ùار Ø§ÙØ£ÙÙ :
function pow(x, n) {
if (n < 0) {
alert("Negative 'n' not supported");
} else {
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
}
Ø§ÙØ®Ùار Ø§ÙØ«Ø§ÙÙ:
function pow(x, n) {
if (n < 0) {
alert("Negative 'n' not supported");
return;
}
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
ÙØ§ÙثاÙÙ ÙÙ Ø£ÙØ«Ø± ÙØ§Ø¨ÙÙØ© ÙÙÙØ±Ø§Ø¡Ø© بسبب âØ§ÙØØ§ÙØ© Ø§ÙØ®Ø§ØµØ©â n < 0 ÙØªÙ
Ø§ÙØªØ¹Ø§Ù
Ù Ù
Ø¹ÙØ§ ÙÙ ÙÙØª Ù
Ø¨ÙØ±. بÙ
جرد Ø§ÙØ§ÙØªÙØ§Ø¡ Ù
٠اÙÙØØµ Ø ÙÙ
ÙÙÙØ§ Ø§ÙØ§ÙØªÙØ§Ù Ø¥Ù٠تدÙ٠اÙÙÙØ¯ âØ§ÙØ±Ø¦ÙسÙâ Ø¯ÙÙ Ø§ÙØØ§Ø¬Ø© Ø¥Ù٠تعÙ
٠إضاÙÙ.
Ù ÙØ§Ù Ø§ÙØ¯ÙاÙ
إذا ÙÙØª ØªÙØªØ¨ Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØ¯Ùا٠اÙ٠ساعدة ٠اÙÙÙØ¯ Ø§ÙØ°Ù ÙØ³ØªØ®Ø¯Ù ÙÙ Ø ÙÙÙØ§Ù Ø«ÙØ§Ø« Ø·Ø±Ù ÙØªÙظÙÙ Ø§ÙØ¯ÙاÙ.
-
Ø¹Ø±Ù Ø§ÙØ¯Ùا٠أعÙ٠اÙÙÙØ¯ Ø§ÙØ°Ù ÙØ³ØªØ®Ø¯Ù ÙØ§:
// تعرÙÙ Ø¯Ø§ÙØ© function createElement() { ... } function setHandler(elem) { ... } function walkAround() { ... } // اÙÙÙØ¯ Ø§ÙØ°Ù ÙØ³ØªØ®Ø¯Ù ÙØ§ let elem = createElement(); setHandler(elem); walkAround(); -
اÙÙÙØ¯ Ø£ÙÙØ§ Ø«Ù Ø§ÙØ¯ÙاÙ
// اÙÙÙØ¯ Ø§ÙØ°Ù ÙØ³ØªØ®Ø¯Ù Ø§ÙØ¯Ø§ÙØ© let elem = createElement(); setHandler(elem); walkAround(); // --- Ø§ÙØ¯Ùا٠اÙ٠ساعدة --- function createElement() { ... } function setHandler(elem) { ... } function walkAround() { ... } -
Ù Ø®ØªÙØ·: ÙØªÙ اتعرÙÙ Ø§ÙØ¯Ø§ÙØ© ÙÙ Ù ÙØ§Ù Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§ ÙØ£Ù٠٠رة.
٠عظ٠اÙÙÙØª Ø ÙÙØ¶Ù Ø§ÙØ®Ùار Ø§ÙØ«Ø§ÙÙ.
ذÙÙ ÙØ£ÙÙ Ø¹ÙØ¯ ÙØ±Ø§Ø¡Ø© اÙÙÙØ¯Ø ÙØ±Ùد Ø£ÙÙØ§Ù Ù Ø¹Ø±ÙØ© ٠ا ÙÙØ¹ÙÙ. إذا Ø°ÙØ¨ اÙÙÙØ¯ Ø£ÙÙØ§ÙØ Ø«Ù ÙØµØ¨Ø ÙØ§Ø¶ØÙا Ù Ù Ø§ÙØ¨Ø¯Ø§ÙØ©. بعد ذÙÙØ رب٠ا ÙÙ ÙØØªØ§Ø¬ Ø¥ÙÙ ÙØ±Ø§Ø¡Ø© Ø§ÙØ¯Ùا٠عÙÙ Ø§ÙØ¥Ø·ÙØ§ÙØ خاصة إذا ÙØ§Ùت أس٠ائÙÙ ÙØµÙÙØ© Ù٠ا ÙÙÙÙ Ù٠ب٠باÙÙØ¹Ù.
ارشادات Ø§ÙØ£Ø³ÙÙØ¨
A style guide contains general rules about âhow to writeâ code, e.g. which quotes to use, how many spaces to indent, the maximal line length, etc. A lot of minor things.
ØªØØªÙ٠ارشادات Ø§ÙØ£Ø³ÙÙØ¨ عÙÙ ÙÙØ§Ø¹Ø¯ عا٠ة ØÙÙ âÙÙÙÙØ© ÙØªØ§Ø¨Ø©â اÙÙÙØ¯ Ø Ø¹Ù٠سبÙ٠اÙÙ Ø«Ø§Ù Ø£Ù Ø¹ÙØ§Ù ات ØªÙØµÙص ÙØ³ØªØ®Ø¯Ù ÙØ§Ø ÙØ¹Ø¯Ø¯ اÙÙ Ø³Ø§ÙØ§Øª Ø§ÙØ¨Ø§Ø¯Ø¦Ø©Ø ÙØ·ÙÙ Ø§ÙØ®Ø· Ø§ÙØ£ÙØµÙØ Ù٠ا Ø¥Ù٠ذÙÙ. اÙÙØ«Ùر Ù Ù Ø§ÙØ£Ø´Ùاء Ø§ÙØ«Ø§ÙÙÙØ©.
Ø¹ÙØ¯Ù ا ÙØ³ØªØ®Ø¯Ù Ø¬Ù ÙØ¹ أعضاء اÙÙØ±Ù٠دÙÙÙ Ø§ÙØ£Ø³ÙÙØ¨ ÙÙØ³ÙØ Ø³ØªØ¨Ø¯Ù Ø§ÙØ´Ùرة Ù ÙØØ¯Ø©Ø Ø¨ØºØ¶ اÙÙØ¸Ø± ع٠أ٠عض٠Ù٠اÙÙØ±ÙÙ ÙØªØ¨Ù.
Ø¨Ø§ÙØ·Ø¨Ø¹Ø ÙÙ ÙÙ ÙÙÙØ±ÙÙ Ø¯Ø§Ø¦Ù ÙØ§ ÙØªØ§Ø¨Ø© دÙÙ٠أسÙÙØ¨Ù Ø§ÙØ®Ø§ØµØ ÙÙÙÙ Ø¹Ø§Ø¯Ø©Ù ÙØ§ Ø¯Ø§Ø¹Ù ÙØ°ÙÙ. ÙÙØ§Ù Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØ§Ø±Ø´Ø§Ø¯Ø§Øª اÙÙ ÙØ¬Ùدة ÙÙØ§Ø®ØªÙار ٠٠بÙÙÙØ§.
بعض Ø§ÙØ®Ùارات Ø§ÙØ´Ø§Ø¦Ø¹Ø©:
- ارشادات أسÙÙØ¨ Google ÙÙØªØ§Ø¨Ø© ا٠JavaScript
- ارشادات أسÙÙØ¨ AirBnb ÙÙØªØ§Ø¨Ø© ا٠JavaScript
- Idiomatic.JS
- StandardJS
- (Ø¨Ø§ÙØ¥Ø¶Ø§ÙØ© Ø¥Ù٠اÙÙ Ø²ÙØ¯)
إذا ÙÙØª Ù Ø·ÙØ±Ùا Ù Ø¨ØªØ¯Ø¦ÙØ§Ø ÙØ§Ø¨Ø¯Ø£ Ø¨Ø§ÙØ§Ø±Ø´Ø§Ø¯Ø§Øª ÙÙ Ø¨Ø¯Ø§ÙØ© ÙØ°Ø§ اÙÙØµÙ. ث٠ÙÙ ÙÙÙ ØªØµÙØ Ø£Ø¯ÙØ© Ø£Ù٠اط Ø£Ø®Ø±Ù ÙØ§ÙØªÙØ§Ø· اÙÙ Ø²ÙØ¯ Ù Ù Ø§ÙØ£ÙÙØ§Ø± ÙØªØØ¯Ùد Ø£ÙÙØ§ ØªÙØ¶Ù.
Ø£Ø¯ÙØ§Øª ÙØØµ اÙÙÙØ¯ (Automated Linters)
Linters ÙÙ Ø£Ø¯ÙØ§Øª ÙÙ ÙÙÙØ§ Ø§ÙØªØÙ٠تÙÙØ§Ø¦ÙÙØ§ ٠٠اسÙÙØ¨ Ø§ÙØ£ÙÙØ§Ø¯ Ø§ÙØ®Ø§ØµØ© Ø¨Ù ÙØªÙدÙÙ Ø§ÙØªØ±Ø§ØØ§Øª ÙØªØØ³ÙÙÙØ§.
Ø§ÙØ´ÙØ¡ Ø§ÙØ¹Ø¸ÙÙ ÙÙ Ø§ÙØ£Ù ر ÙÙ Ø£Ù ÙØØµ Ø§ÙØ£Ø³ÙÙØ¨ ÙÙ ÙÙ Ø£Ù ÙØ¬Ø¯ Ø£ÙØ¶Ùا بعض Ø§ÙØ£Ø®Ø·Ø§Ø¡Ø Ù Ø«Ù Ø§ÙØ£Ø®Ø·Ø§Ø¡ اÙÙ Ø·Ø¨Ø¹ÙØ© Ù٠أس٠اء اÙÙ ØªØºÙØ±Ø§Øª Ø£Ù Ø§ÙØ¯ÙاÙ. بسبب ÙØ°Ù اÙÙ ÙØ²Ø©Ø ÙÙØµÙ باستخدا٠Linters ØØªÙ إذا ÙÙØª ÙØ§ ترغب ÙÙ Ø§ÙØªÙ Ø³Ù Ø¨Ù âØ§Ø³ÙÙØ¨ ÙÙØ¯â ٠عÙÙ.
ÙÙ٠ا ÙÙ٠بعض Ø£Ø¯ÙØ§Øª اÙÙØØµ Ø§ÙØ´ÙÙØ±Ø©:
- JSLint â Ø£ØØ¯ Ø£ÙØ§Ø¦Ù Ø§Ø¯ÙØ§Øª اÙÙØØµ.
- JSHint â Ø¨Ù خصائص Ø§ÙØ«Ø± Ù Ù JSLint.
- ESLint â ØºØ§Ùبا ÙÙ Ø§ÙØ£ØØ¯Ø«.
ÙÙ ÙÙ ÙØ¬Ù ÙØ¹Ù٠اÙÙÙØ§Ù Ø¨ÙØ°Ù اÙÙ ÙÙ Ø©. اÙ٠ؤÙÙ ÙØ³ØªØ®Ø¯Ù ESLint.
ØªØªÙØ§Ù Ù Ù Ø¹Ø¸Ù Ø£Ø¯ÙØ§Øª ÙØØµ اÙÙÙØ¯ ٠ع Ø§ÙØ¹Ø¯Ùد Ù Ù Ù ØØ±Ø±Ø§Øª Ø§ÙØ£ÙÙØ§Ø¯ Ø§ÙØ´ÙÙØ±Ø©: ٠ا عÙÙ٠سÙ٠ت٠ÙÙÙ Ø§ÙØ§Ø¶Ø§ÙØ© )(Plugin) Ù٠اÙÙ ØØ±Ø± ÙØªÙÙÙ٠اÙÙÙØ¯.
عÙ٠سبÙ٠اÙÙ Ø«Ø§Ù Ø Ø¨Ø§ÙÙØ³Ø¨Ø© ÙÙ ESLint Ø ÙØ¬Ø¨ عÙÙ٠اÙÙÙØ§Ù ب٠ا ÙÙÙ:
- ØªÙØ²ÙÙ Node.js.
- ÙÙ
Ø¨ØªØ«Ø¨ÙØª ESLint باستخداÙ
Ø§ÙØ£Ù
ر
npm install -g eslint(npm ٠ثبت ØØ²Ù Ø© JavaScript). - ÙÙ
Ø¨Ø¥ÙØ´Ø§Ø¡ Ù
ÙÙ Ø§ÙØªÙÙÙ٠اÙÙ
سÙ
Ù
.eslintrcÙ٠جذر Ù Ø´Ø±ÙØ¹ Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت Ø§ÙØ®Ø§Øµ ب٠(Ù٠اÙÙ Ø¬ÙØ¯ Ø§ÙØ°Ù ÙØØªÙ٠عÙÙ Ø¬Ù ÙØ¹ Ù ÙÙØ§ØªÙ). - ÙÙ Ø¨ØªØ«Ø¨ÙØª/ت٠ÙÙÙ Ø§ÙØ§Ø¶Ø§ÙØ© ÙÙ ØØ±Ø± Ø§ÙØ£ÙÙØ§Ø¯ Ø§ÙØ®Ø§Øµ Ø¨Ù Ù Ø§ÙØ°Ù ÙØªÙا٠٠٠ع ESLint. ØºØ§ÙØ¨ÙØ© اÙÙ ØØ±Ø±ÙÙ ÙØ¯ÙÙÙ ÙØ§ØØ¯.
ÙÙØ§ Ù
ثا٠عÙÙ Ù
ÙÙ.eslintrc:
{
"extends": "eslint:recommended",
"env": {
"browser": true,
"node": true,
"es6": true
},
"rules": {
"no-console": 0,
"indent": 2
}
}
ÙÙØ§ Ø§ÙØªÙجÙÙ "extends" ÙØ´Ùر Ø¥ÙÙ Ø£Ù Ø§ÙØªÙÙÙÙ ÙØ³ØªÙد Ø¥ÙÙ Ù
جÙ
ÙØ¹Ø© اعدادات âeslint:recommendedâ . بعد ذÙÙ ÙÙ
ÙÙÙØ§ ØªØØ¯Ùد Ø§ÙØ§Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§ÙØ®Ø§ØµØ© Ø¨ÙØ§.
٠٠اÙÙ Ù ÙÙ Ø£ÙØ¶Ùا ØªÙØ²ÙÙ Ù Ø¬Ù ÙØ¹Ø§Øª ٠٠ارشادات Ø§ÙØ£Ø³ÙÙØ¨ Ù Ø§ÙØ§Ø¶Ø§ÙØ© عÙÙÙØ§ Ø¨Ø¯ÙØ§Ù ٠٠ذÙÙ. See http://eslint.org/docs/user-guide/getting-started Ù٠عÙÙ٠ات Ø£ÙØ«Ø± Ø¹Ù Ø§ÙØªÙزÙÙ.
Ù٠ا أ٠بعض Ø¨ÙØ¦Ø© تطÙÙØ± Ù ØªÙØ§Ù ÙØ© (IDEs) ØªØØªÙ٠عÙÙ Ø£Ø¯ÙØ§Øª ÙØØµ اÙÙÙØ¯ Ù Ø¯Ù Ø¬Ø©Ø ÙÙ٠أ٠ر Ù Ø±ÙØ ÙÙÙÙÙ ØºÙØ± ÙØ§Ø¨Ù ÙÙØªØ®ØµÙص ٠ث٠ESLint.
اÙÙ ÙØ®Øµ
ØªÙØ¯Ù Ø¬Ù ÙØ¹ ÙÙØ§Ø¹Ø¯ طرÙÙØ© ÙØªØ§Ø¨Ø© اÙÙÙØ¯ ÙÙ ÙØ°Ø§ اÙÙØµÙ (ÙÙ٠ارشادات Ø§ÙØ£Ø³ÙÙØ¨ اÙ٠شار Ø¥ÙÙÙØ§) Ø¥ÙÙ Ø²ÙØ§Ø¯Ø© Ø¥Ù ÙØ§ÙÙØ© ÙØ±Ø§Ø¡Ø© Ø§ÙØ£ÙÙØ§Ø¯ Ø§ÙØ®Ø§ØµØ© بÙ. Ù ÙÙÙ٠ا ÙØ§Ø¨ÙØ© ÙÙÙÙØ§Ø´.
Ø¹ÙØ¯Ù ا ÙÙÙØ± ÙÙ ÙØªØ§Ø¨Ø© ÙÙØ¯ âØ£ÙØ¶Ùâ Ø ÙØ¥Ù Ø§ÙØ£Ø³Ø¦ÙØ© Ø§ÙØªÙ ÙØ¬Ø¨ Ø£Ù ÙØ·Ø±ØÙا عÙ٠أÙÙØ³Ùا ÙÙ: â٠ا Ø§ÙØ°Ù ÙØ¬Ø¹Ù اÙÙÙØ¯ Ø£ÙØ«Ø± ÙØ§Ø¨ÙÙØ© ÙÙÙØ±Ø§Ø¡Ø© ÙØ£Ø³ÙÙ Ù٠اÙÙÙÙ Øâ Ù â٠ا Ø§ÙØ°Ù ÙÙ ÙÙ Ø£Ù ÙØ³Ø§Ø¹Ø¯Ùا ÙÙ ØªØ¬ÙØ¨ Ø§ÙØ£Ø®Ø·Ø§Ø¡Øâ تÙÙ ÙÙ Ø§ÙØ£Ø´Ùاء Ø§ÙØ±Ø¦ÙØ³ÙØ© Ø§ÙØªÙ ÙØ¬Ø¨ ÙØ¶Ø¹Ùا ÙÙ Ø§ÙØ§Ø¹ØªØ¨Ø§Ø± Ø¹ÙØ¯ Ø§Ø®ØªÙØ§Ø± ÙÙ ÙØ§Ùشة ارشادات أسÙÙØ¨ ÙØªØ§Ø¨Ø© اÙÙÙØ¯.
Ø³ØªØ³Ù Ø ÙÙ ÙØ±Ø§Ø¡Ø© Ø£Ø¯ÙØ© Ø§ÙØ£Ù٠اط Ø§ÙØ´Ø§Ø¦Ø¹Ø© Ø¨Ù ÙØ§Ùبة Ø£ØØ¯Ø« Ø§ÙØ£ÙÙØ§Ø± ØÙÙ Ø§ØªØ¬Ø§ÙØ§Øª ÙÙ Ø· Ø§ÙØªØ¹ÙÙ٠ات Ø§ÙØ¨Ø±Ù Ø¬ÙØ© ÙØ£Ùض٠اÙ٠٠ارسات.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)