جافا سكريبت

التاريخ

في عام 1993، أصدر المركز الوطني لتطبيقات الحوسبة الفائقة (NCSA)، وهي وحدة تابعة لجامعة إلينوي في أوربانا شامبين ، NCSA Mosaic ، أول متصفح ويب رسومي شائع ، والذي لعب دورًا مهمًا في توسيع نمو الشبكة العالمية الناشئة الويب خارج مكانة NeXTSTEP حيث تشكل WorldWideWeb قبل ثلاث سنوات. في عام 1994 ، تأسست شركة تدعى Mosaic Communications في ماونتن فيو ، كاليفورنيا ووظفت العديد من مؤلفي NCSA Mosaic الأصليين لإنشاء Mosaic Netscape. ومع ذلك، فقد تعمدت عدم مشاركة رمز مع NCSA Mosaic. الاسم الرمزي الداخلي لمتصفح الشركة هو Mozilla ، وهو رمز لـ "Mosaic and Godzilla"  . تم إصدار الإصدار الأول من مستعرض الويب ، Mosaic Netscape 0.9 ، في أواخر عام 1994 خلال أربعة أشهر، استحوذت بالفعل على ثلاثة أرباع سوق المتصفح وأصبحت متصفح الويب الرئيسي للتسعينات. لتجنب مشاكل ملكية العلامة التجارية مع NCSA ، تمت إعادة تسمية المستعرض لاحقًا في Netscape Navigator في نفس العام ، وحصلت الشركة على اسم Netscape Communications. أدركت Netscape Communications أن الويب يحتاج إلى أن يصبح أكثر ديناميكية. يعتقد مارك أندريسن ، مؤسس الشركة ، أن HTML يحتاج إلى "لغة لاصقة" كان من السهل استخدامها من قبل مصممي الويب والمبرمجين غير المتفرغين لتجميع مكونات مثل الصور والإضافات ، حيث يمكن كتابة الكود مباشرة في الويب ترميز الصفحة.

الكائنات العامة

في هذا القسم جميع الكائنات العامة المُضمَّنة في لغة JavaScript، إضافةً إلى جميع الخاصيات والدوال التابعة لها.

الخاصيات العامة

هذه الخاصيات العامة تُعيد قيمةً بسيطةً، فهي لا تُمثِّل دوالًا أو خاصياتٍ تابعة لأحد الكائنات.
InfinityNaNundefinednull

الدوال العامة

هذه الدوال العامة -أي التي تستدعى في النطاق العام بدل استدعائها على كائن بعينه- تُعيد نتائجها إلى التعبير البرمجي الذي استدعاها.
eval()isFinite()isNaN()parseFloat()parseInt()decodeURI()decodeURIComponent()encodeURI()encodeURIComponent()escape()unescape()

الكائنات الأساسية

هذه هي الكائنات الأساسية التي بنيت الكائنات الأخرى عليها، وهي تتضمن الكائنات التي تستطيع تمثيل الكائنات العامة والدوال والأخطاء.
ObjectFunctionBooleanSymbolErrorEvalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIError

الأرقام والتواريخ

وهي الكائنات الأساسية التي تُمثِّل الأرقام والتواريخ والعمليات الرياضية.
NumberMathDate

معالجة النصوص

هذه الكائنات تُمثِّل السلاسل النصية وطرائق معالجتها وتعديلها.
StringRegExp

التعابير البرمجية

في هذا القسم جميع التعابير البرمجية الموجودة في لغة JavaScript.

block

تُستخدَم الأقسام الكتلية لتجميع عدِّة تعابير برمجية معًا، ويُعرَّف القسم بزوجين من الأقواس المعقوفة {}.

break

يإنهاء حلقة التكرار الحالية أو التعبير switch أو label، وستنقل تنفيذ البرنامج إلى التعبير البرمجي الذي يلي التعبير الذي انتهى.

continue

تجاوز تنفيذ التعابير البرمجية في التكرار الحالي (iteration) في حلقة التكرار الحالية أو حلقة التكرار المسماة (عبر لافتة)، وسيستمر تنفيذ الحلقة بدءًا من التكرار التالي.

Empty

يُستخدَم لتجنب توفير تعبير برمجي في المواضع التي تتطلب فيها JavaScript تعبيرًا برمجيًا واحدًا على الأقل.
if...else
التعبير البرمجي الشرطي يُستخدَم لتنفيذ تعبير برمجي معيّن عندما يكون الشرط محققًا، وإذا كان الشرط غير محققٍ فسيُنفِّذ تعبيرًا برمجيًا آخر.
switch
يُستخدَم لمطابقة قيمة تعبير برمجي باستخدام عبارةcase، ثم يُنفِّذ التعابير البرمجية المرتبطة معها.
throw
يؤدي إلى رمي استثناء (exception) يُعرِّفه المستخدم.
try...catch
يُستخدَم لتجربة قسم من التعابير البرمجية، ويُحدِّد طريقةً لمعالجة الاستثناءات إن رُمِيَت.

تعابير التصريح عن متغيرات

var
تعبير variable يُصرِّح عن متغير، ويمكن تهيئة قيمته الابتدائية اختياريًا.
let
يُصرِّح عن متغير محلي للقسم الكتلي، ويمكن تهيئة قيمته الابتدائية اختياريًا.
const
التصريح عن ثابت للقراءة فقط.

function (التصريح عن دالة)

التصريح عن الدالة (function declaration) يُعرِّف دالةً لها معاملات (parameters) معيّنة. انظر إلى صفحة «الدوال في JavaScript» للمقارنة بين صيغ تعريف الدوال.

function* (التصريح عن دالة مولدة)

التصريح عن الدالة المولدة. انظر إلى صفحة «الدوال في JavaScript» للمقارنة بين صيغ تعريف الدوال.

async function (التصريح عن دالة غير متزامنة)

التصريح عن دالة غير متزامنة. انظر إلى صفحة «الدوال في JavaScript» للمقارنة بين صيغ تعريف الدوال.

return

يؤدي إلى إنهاء تنفيذ الدالة ويُحدِّد قيمةً لتُعيدها الدالة إلى التعبير الذي استدعاها.

class (التصريح عن صنف)

التصريح عن الصنف (class declaration) يؤدي إلى إنشاء صنف جديد له اسمٌ معيّن يستخدم الوراثة عبر سلسلة prototype.

حلقات التكرار

do...while
يُنشِئ حلقة تكرار تُنفِّذ تعبيرًا برمجيًا معيّنًا إلى أن يصبح الشرط غير محقق (false)، وسيتم التحقق من الشرط بعد تنفيذ التعبير البرمجي، مما يؤدي إلى تنفيذ التعبير البرمجي المُعيّن مرةً واحدةً على الأقل.
for
يُنشِئ حلقة تكرار تتألف من ثلاثة تعبيرات برمجية اختيارية تحيط بها أقواس وتفصل بينها فواصل منقوطة، ويليها تعبيرٌ برمجيٌ (وعادةً يكون قسمًا كتليًا [block statement]) سيُنفَّذ في كل تكرار للحلقة.
for...in
يُنشِئ حلقة تكرار تمر على الخاصيات القابلة للإحصاء (enumerable properties) التابعة لأحد الكائنات.
for...of
يمر على الكائنات التي يمكن الدوران على عناصرها (iterable objects) بما في ذلك الكائن Array وMap وSet وString وTypedArray وArguments، وتنفيذ تعابير برمجية معيّنة على قيمة كل خاصية من خاصيات تلك الكائنات.
while
يُنشِئ حلقة تكرار تُنفِّذ تعبيرًا برمجيًا معيّنًا طالما كان الشرط محققًا (true)، وسيتم التحقق من الشرط قبل تنفيذ التعبير البرمجي.

غير ذلك

debugger
يؤدي إلى تفعيل وظيفة التنقيح (debugging functionality) المتاحة، مثل بداية نقطة المقاطعة (breakpoint)؛ لكن إن لم يكن هنالك منقِّح أو وظيفة تنقيح متاحة فلن يكون لهذا التعبير أي أثر.
export
يمكن أن يُستخدَم عند إنشاء وحدات JavaScript (أي JavaScript modules) لتصدير الدوال أو الكائنات أو القيم الأوليّة (primitive values) من وحدة (module) لكي يمكن استخدامها من برنامج آخر باستخدام التعبير البرمجي import.
import
يُستخدَم لاستيراد ما صُدِّر من وحدة (module) أخرى.
label
يمكن أن يُستخدَم مع التعبير البرمجي break أوcontinue، وهو يوضع قبل التعابير البرمجية لإضافة لافتة (مُعرِّف) لها يمكن الإشارة إليها.

التعابير والمعاملات

هذا القسم فيه ما يتعلق بالتعابير والمعاملات في JavaScript.

التعابير الأساسية

وهي تتضمن التعابير والكلمات المحجوزة العامة في JavaScript.

this

تُحدَّد قيمة الكلمة المحجوزة this وفق طريقة استدعاء الدالة.

function (تعبير تعريف الدوال)

الكلمة المحجوزة function تُستخدَم لتعريف دالة داخل تعبير (expression). انظر إلى صفحة «الدوال في JavaScript» للمقارنة بين صيغ تعريف الدوال.

class (تعبير تعريف الأصناف)

الكلمة المحجوزة class تشير إلى تعبير تعريف للأصناف.

function* (تعبير تعريف الدوال المولدة)

الكلمة المحجوزة function* تُستخدَم لتعريف دالة مولِّدة داخل تعبير. انظر إلى صفحة «الدوال في JavaScript» للمقارنة بين صيغ تعريف الدوال.

yield

الكلمة المحجوزة yield تُستخدَم لإيقاف تنفيذ دالة مولِّدة (function*) مؤقتًا واستئناف تنفيذها.

yield*

التعبير yield* يُستخدَم لتفويض التنفيذ إلى دالة مولِّدة أخرى أو كائن iterable.

async function* (تعبير تعريف الدوال غير المتزامنة)

الكلمة المحجوزة async function تُستخدَم لتعريف دوال غير متزامنة ضمن تعبير (expression). انظر إلى صفحة «الدوال في JavaScript» للمقارنة بين صيغ تعريف الدوال.

await

يُستخدَم لانتظار وعد (الكائن Promise)، ويمكن أن يُستخدَم داخل دالة غير متزامنة فقط (async function).

[]

الشكل المختصر لتعريف المصفوفات.

{}

الشكل المختصر لتهيئة الكائنات.

/ab+c/i

الشكل المختصر لتعريف التعابير النمطية (regular expressions).

( )

معامل التجميع.

الوصول إلى الخاصيات

طرائق الوصول إلى الخاصيات توفِّر وصولًا إلى خاصيات أحد الكائنات باستخدام طريقة النقط أو طريقة الأقواس.

new

يُنشِئ نسخةً من كائن مُعرَّف من المستخدم أو نسخةً من أحد أنواع الكائنات المُضمّنة في لغة JavaScript والتي تملك دالةً بانيةً.

new.target

تسمح لك بمعرفة إن استدعيت دالةٌ عاديةٌ أم دالةٌ بانيةٌ باستخدام المعامل new.

super

تُستخدَم للوصول إلى الكائنات في الكائن الأب واستدعائها.

معامل النشر (obj...)

معامل النشر (spread operator) يسمح للكائنات التي يمكن المرور على عناصرها (أي أنها iterable) مثل تعابير المصفوفات أو السلاسل النصية أن توسَّع في الأماكن التي تتوقع JavaScript وجود صفر وسيط أو أكثر (عند استدعاء الدوال) أو صفر عنصر أو أكثر (في المصفوفات)، أو نشر كائن في الأمكان التي تتوقع JavaScript وجود صفر زوج أو أكثر من المفتاحي والقيم المرتبطة بها (عند تعريف الكائنات).

المعاملات النسبية

تجري هذه المعاملات عملياتها على قيمةٍ ما وتُعيد قيمةً منطقية (Boolean) بناءً على قيمة ناتج المقارنة.

in

يُعيد القيمة true إذا كانت الخاصية المُحدَّدة موجودةً في الكائن أو في سلسلة prototype الخاصة به.

instanceof

يختبر إذا كانت الخاصية prototype لدالة بانية تظهر في أيّ مكان في سلسلة prototype لأحد الكائنات.

المعامل الشرطي الثلاثي

هو المعامل الوحيد في JavaScript الذي يأخذ ثلاثة قيمة ليجري عليها عمليته، ومن الشائع استخدام هذا المعامل كاختصارٍ للتعبير البرمجي if.

معامل الفاصلة

يُقدِّر القيم التي يجري عمليتها عليها (من اليسار إلى اليمين) ويُعيد قيمة آخر قيمة .

الاستخدام داخل المتصفح

يقوم المتصفح بتحميل البرنامج المكتوب بلغة الجافاسكريبت إما مضمّناً داخل صفحة الـ HTML أو من ملف خارجي. تنفذ جميع العمليات التي على جهاز المستخدم — أي ضمن المتصفح الخاص به.
تقوم الجافاسكريبت بإنشاء دوال تفاعلية. وهذا ما تستخدمه العديد من المواقع والصفحات مثل فيسبوك ويوتيوب.
هذا مثال بسيط لصفحة برنامج مضمن داخل الـHTML يقوم بإظهار رسالة "وعليكم السلام" عند الضغط على زر "السلام عليكم":
<html>
 <head><title>مثال</title></head>
 <body dir="rtl">
 <script type="text/javascript">
 function salam(){
 alert("وعليكم السلام");
 ;}
 </script>
 <button onclick="salam();">السلام عليكم</button>
  </body></html>