نحو الجافا سكريبت هو مجموعة من القواعد لكتابة برنامج مفهوم من قبل الحاسوب.

المتغيرات Variables
-------------------

تعتبر كذاكرات تحفظ قيما وتحمل اسمًا معينًا ويمكن استرجاع القيمة أو تعديلها أثناء التشغيل الفعلي للكود (Run time)، كما أنه يمكن تعديل نوع البيانات (Data Type) المخزنة في هذا المتغير أيضًا للبرنامج وتسمى هذه الخاصية تغيير النوع التفاعلي (Dynamic Typing) وتقوم بإنشاء المتغيرات.

في السابق كان على المبرمج استخدام كلمة var، لتعريف (variable) جديد، أما في التحديثات الأخيرة للغة الجافاسكريبت تمت إضافة كلمة let لتعريف (variable)، وذلك لحل مشكلة النطاق المتغير في الدوال 

```
var a = 1;
var b = 2;

if (a === 1) {
 var a = 11; // النطاق (global) عالي
 let b = 22; //النطاق محلي، فقط داخل الدالة

 console.log(a); // 11
 console.log(b); // 22
}

console.log(a); // 11
console.log(b); // 2

```

كما يمكن للمبرمج استخدام كلمة const لتعريف مكان جديد في ذاكرة البرنامج لحفظ قيمة ثابتة، لا يمكن تعديلها لاحقاً. انظر للمرجع لتفاصيل أكثر.

الكائنات Objects
----------------

الكائنات Objects مثلا هي الصور والأزرار والصفحات والبيانات وكل ما في ذاكرة الحاسب من أشياء يتم التعامل معها كأنها كائنات. وكل كائن له خصائص تميزه وطرق (Methods) ووظائف (Functions) تستخدم للتعامل مع كل كائن للقيام بالوظائف الخاصة به.

```
var obj = new Object();
obj.name = "wikipedian";
obj.age = 18;

//أو
var obj = {
 name: "wikipedian",
 age: 18
}

```

الدوال Functions
----------------

وتسمى أيضا **الوظائف**، وهي تجمع عدة تعليمات (Instructions) تحت اسم مرجعي واحد. فمثلاً لطلب أن يقوم المتصفح بإظهار رسالة معينة للمستخدم ثم تلقي الإجابة منه نقوم بجمع هذه التعليمات في دالة (وظيفة) واحدة، وكلما تطلب الأمر تنفيذ نفس التعليمات السابقة نقوم باستخدام هذه الدالة فوراً دون الحاجة لكتابة التعليمات مرة أخرى.

توجد عدة طرق لتعريف (إنشاء) الدوال، أشهرها كتابة الكلمة المحجوزة **function** يتبعها اسم الدالة وعلامة () وثم يتم فتح جسم الدالة {} وكتابة الجمل البرمجية التي ستنفذها تلك الدالة.

ما يميز استخدام هذه اللغة في الويب هو مرونتها حتى في إعادة تعريف الدوال والمتغيرات بأحرف مرمزة بلغة أخرى مثل العربية، وأبرز مثال هو برنامج المعالج الرياضي. مع أنه لا يفضل استخدام لغات غير الإنكليزية إلا أن الغرض هو إظهار مرونة هذه اللغة وتبسيط الدوال للطلبة الذين لا يجيدون اللغة الإنجليزية.

```
function hello(){
 var text = "Hello, World!";
 alert(text);
}

```

الشرطيات Conditions
-------------------

* **المقارنة بين القيم**

|  |  |
| --- | --- |
| العلامة | الدلالة |
| {\displaystyle ==} | تساوي القيمة |
| {\displaystyle !=} | لا تساوي القيمة |
| {\displaystyle ===} | تساوي القيمة والنوع |
| {\displaystyle !==} | لا تساوي القيمة ولا النوع |
| {\displaystyle <} | أكبر من |
| {\displaystyle >} | أقل من |
| {\displaystyle <=} | أكبر أو تساوي |
| {\displaystyle >=} | أقل أو تساوي |

**الشرطيات** هي مجموعة تعليمات تنفذ في حالة تحقق شرط معين، منها:

* **if**

شرطية «إذا» تقوم بتنفيذ مجموعة من المهام إذا تحققت الشروط.

```
if (شرط1) {
 //إذا تحقق الشرط أعلاه، سيتم تنفيذ ما هو موجود هنا
} else if (شرط2) {
 //إذا لم يتحقق الشرط الأول، وتحقق الشرط الثاني، فسينفذ ما يوجد هنا
} else {
 //إذا لم يتحقق إي من الشرطين السابقين، سيتم تنفيذ ما هو موجود هنا
}

```

* **switch**

```
switch (expr) {
 case SOMEVALUE:
 //statements;
 break;
 case ANOTHERVALUE:
 //statements;
 break;
 default:
 //statements;
 break;
 }

```

```
function print(){
 window.alert("welcome"); 
}

```

التكراريات Loops
----------------

تمكن من تنفيذ مجموعة تعليمات بطريقة تكرارية أو دورية. منها:

* **for**

تقوم بتكرار عمل ما، مادام الشرط محققاً. وفي كل مرة، يتم تنفيذ عملية على الشرط لتغييره (زيادة، نقصان، إلخ)

```
for (initial; condition; loop statement) {
 // التغيير الشرط البداية
 
 /\*
 الجمل البرمجية التي يتم تنفيذها في كل تكرار
 مادام الشرط محققا
 \*/
 }

```

* **while**

تقوم بتكرار سلسلة من العمليات ما **دام** الشرط محقق.

```
while (شرط) {
// المهام
}

```

* **do ... while**

مثل تكرارية while

```
do {
// المهام
} while (الشرط);

```

انظر أيضا
---------

* جافا سكريبت

مراجع
-----

1. ↑  "let". *MDN Web Docs* (بالإنجليزية الأمريكية). Archived from the original on 2019-05-28. Retrieved 2018-08-05.
2. ↑  "Grammar and types". *MDN Web Docs* (بالإنجليزية الأمريكية). Archived from the original on 2019-05-28. Retrieved 2018-08-05.
3. ↑  "Rest parameters" en (بالإنجليزية). Archived from the original on 2018-05-30. Retrieved 2020-04-07. `{{استشهاد ويب}}`: الوسيط غير صالح `|script-title=`: بادئة مفقودة (help)
4. ↑  Flanagan، David (2006). *JavaScript: The definitive Guide*. ص. 16. ISBN:978-0-596-10199-2. Omitting semicolons is not a good programming practice; you should get into the habit of inserting them.
5. ↑  JavaScript 1.1 specification نسخة محفوظة 26 فبراير 2017 على موقع واي باك مشين.

| * ع
* ن
* ت
جافا سكريبت |
| --- |
| تحليلات الاكواد | 
* JSHint
* JSLint

 |  |
| مصرفات | 
* كافي سكريبت
* Emscripten
* Google Closure Compiler
* أدوات ويب جوجل
* Morfik
* تايب اسكربت
* AtScript
* Opa
* Haxe
* كلوجر (لغة برمجة)

 |
| المفاهيم | 
* أجاكس
* Client-side
* دي إتش تي إم إل
* مكتبة جافا سكريبت
* قواعد لغة جافا سكريبت
* جافا سكريبت الواضحة

 |
| منقحات | 
* Firebug
* Komodo IDE
* Microsoft Script Debugger
* Microsoft Script Editor
* Opera Dragonfly
* Venkman
* مايكروسوفت فيجوال ستوديو
	+ مايكرسوفت فيجوال ستوديو إكسبريس
* مايكروسوفت مُحرر الشيفرات البرمجية
* سفاري (متصفح ويب)

 |
| مولد وثائق ( Doc generators  ) | 
* جي إس دوك

 |
| محررات (Editors) (comparison) | 
* Ace
* Atom
* Cloud9 IDE
* CodeMirror
* Codenvy
* Koding
* Orion
* مايكروسوفت فيجوال ستوديو
	+ مايكرسوفت فيجوال ستوديو إكسبريس
* مايكروسوفت مُحرر الشيفرات البرمجية
* Visual Studio Online

 |
| محرك جافا سكريبت | 
* Comparison of layout engines
* List of ECMAScript engines
* محرك جافا سكريبت

 |
| إطارات عمل ( إطار عمل ) | 
* مقارنة بين إطارات عمل جافا سكريبت
* List of JavaScript libraries

 |
| تكنولوجيا مرتبطة تكنولوجيا | 
* صفحات الطرز المتراصة
* نموذج كائن المستند
* لغة ترميز النص الفائق
* جسون

 |
| نظام إدارة الحزم (نظام إدارة الحزم) | 
* Npm
* NuGet
* Bower

 |
| جافا سكريبت من جانب الخادم (Server-side) | 
* صفحات خادم نشطة
* كومون جي إس
* JSGI
* نود.جي إس
* Wakanda

 |
| وحدات اختبار (اختبار الوحدة) | 
* Jasmine
* Mocha
* ياسمين (إطار جافا سكريبت)
* QUnit
* List of JavaScript unit testing frameworks

 |
| اشخاص | 
* دوغلاس كروكفورد
* برندان آيخ
* جون ريسج

 |

* أيقونة بوابةبوابة برمجة الحاسوب