افتح القائمة الرئيسية

جافا سكريبت

لغة برمجة عالية المستوى
جافا سكريبت
Unofficial JavaScript logo 2.svg
 

التصنيف برمجة كائنية
ظهرت في 4 ديسمبر 1995  تعديل قيمة خاصية بداية (تدشين) (P571) في ويكي بيانات
صممها برندان آيخ  تعديل قيمة خاصية مصمم (P287) في ويكي بيانات
المطور برندان آيخ  تعديل قيمة خاصية المطور (P178) في ويكي بيانات
رقم اخر اصدار ECMAScript 2018 (يونيو 2018)[1]  تعديل قيمة خاصية معرف نسخة البرنامج (P348) في ويكي بيانات
متأثرة بـ سكيم[2]،  وسيلف[2]،  وجافا[2]،  وسي،  وبايثون،  ولوا،  وبيرل،  وأوك  تعديل قيمة خاصية تأثر ب (P737) في ويكي بيانات
متفرقات
امتدادات الملفات .js .mjs .jsx
موقع ويب الموقع الرسمي  تعديل قيمة خاصية موقع الويب الرسمي (P856) في ويكي بيانات

جافا سكريبت (بالإنجليزية: JavaScript) هي لغة برمجة عالية المستوى تستخدم أساسا في متصفحات الويب لإنشاء صفحات أكثر تفاعلية.[3][4][5] يتم تطويرها حاليا من طرف شركة نتسكيب وشركة موزيلا.

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

تُستخدَم لغة JavaScript لإنشاء صفحات ويب تفاعلية، ولتوفير تطبيقات ويب بما في ذلك الألعاب؛ وهي مُستعمَلة من أغلبية المواقع، وتدعمها جميع المتصفحات تقريبًا دن الحاجة إلى إضافات خارجية.

محتويات

التاريخعدل

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

أصل التسميةعدل

في البداية تم تطوير هذه اللغة تحت اسم موكا (Mocha)، وأطلق عليها اسم LiveScript رسمياً أثناء تجريبها في إصدار متصفحات نتسكيب نافيجاتور 2.0 بيتا (Beta) سنة 1995.[7] لكنها لاحقاً غيرت اسمها إلى جافاسكريبت JavaScript ويعود ذلك إلى إضافتها لدعم لغة الجافا.

هذا التغيير في الاسم سبب الغموض وسوء الفهم موحياً بأن لغة الجافا والجافاسكريب مرتبطان أو متشابهتان. صحيح أن كلاهما يمتلكان شكلاً شبيهاً بلغة السي، إلا أن أوجه الاختلاف بين اللغتين واسع:

  • الجافا بحاجة إلى التحويل إلى بايت كود Bytecode. بينما برامج الجافاسكريبت فيتم معالجتها كنص مصدري.
  • المتغيرات في الجافا ثابتة النوع، بينما في الجافاسكريبت فهي ديناميكية. يعني أنك عند تعريف متغير ما في الجافا فيجب تحديد نوعه الذي لا يمكن تغييره. مثلا، لو عرفت المتغير "العمر" بأنه رقم وأعطيته قيمة "7" مثلا فلا يمكنك تغيير الرقم إلى نوع آخر (ككلمة "سبعة"). بينما في الجافاسكريت فيمكنك فعل ذلك.
  • الجافا لم تدعم البرمجة الأمرية إلا بداية من الإصدار الثامن. بينما الجافاسكريبت فدعمتها منذ البداية.

بنية اللغةعدل

كانت لغة JavaScript محدودةً إلى متصفحات الويب فيما قد سلف، لكن توسّع مجال JavaScript في الفترة الأخيرة لتضم إنشاء تطبيقات ويب من جهة الخادم (server-side) مع التعامل مع قواعد البيانات، إضافةً إلى إمكانية استخدامها في بيئات ليست متعلقة بالويب مثل معالجات النصوص وبرمجيات PDF، ومن الممكن استعمالها أيضًا لكتابة تطبيقات سطح المكتب أو تطبيقات الهواتف، وحتى تطوير الألعاب!

هنالك الكثير من محركات JavaScript، وكل واحدٍ منها يخضع لمواصفة ECMAScript (مع أنَّها تختلف فيما بينها بالإصدارات التي تدعمها). يوجد في نهاية كل صفحة من صفحات هذا التوثيق قسمٌ بعنوان «دعم المتصفحات» الذي نذكر فيه ما هي المتصفحات التي تدعم الميزة المذكورة.

يتألف أساس لغة JavaScript من الميزات الشائعة للغات البرمجة، التي تسمح لنا:

  • بتخزين القيم داخل متغيرات،
  • إجراء عمليات معالجة على السلاسل النصية،
  • تنفيذ إجراءات معيّنة اعتمادًا على وقوع الأحداث.

ما يجب أن يثير اهتمامنا هو الواجهات البرمجية التي تُضيف وظائف على لغة JavaScript، وتسمى هذه الواجهات البرمجية بالمصطلح APIs (أي Application Programming Interfaces)، والتي تسمح للمطورين باستخدام لغة JavaScript للتعامل مع كثيرٍ من الأشياء، في مجال متصفحات الويب يمكننا استخدام JavaScript للتعامل مع شجرة DOM، ولاستخدام الواجهة البرمجية للمواقع الجغرافية (Geolocation API)، ولإنشاء رسوميات ثنائية وثلاثية الأبعاد عبر Canvas وWebGL، وللتحكم بالوسائط مثل الفيديو والصوت، وغير ذلك.

ويمكن استخدام JavaScript أيضًا من طرف الخادم، ولمزيدٍ من المعلومات انظر إلى صفحة Node.js.

يمكن تضمين شيفرات JavaScript في الصفحات بطريقتين:

  1. تضمين الشيفرات داخل مستند HTML
  2. استخدام ملف خارجي

يمكن تضمين شيفرة JavaScript في أي مكان داخل المستند، لكن يُنصَح بوضعها قبل وسم الإغلاق للعنصر <body>. تُضاف الشيفرة داخل العنصر <script> كما يلي:

<script>
  // شيفرات JavaScript
</script>

أما إذا كانت شيفرة JavaScript في ملفٍ خارجي (وليكن اسمه script.js) فيمكن تضمينه باستخدام العنصر <script> أيضًا، لكن مع استخدام الخاصية src كما يلي:

<script src="script.js"></script>

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

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

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

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

Infinity
NaN
undefined
null

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

هذه الدوال العامة -أي التي تستدعى في النطاق العام بدل استدعائها على كائن بعينه- تُعيد نتائجها إلى التعبير البرمجي الذي استدعاها.

eval()
isFinite()
isNaN()
parseFloat()
parseInt()
decodeURI()
decodeURIComponent()
encodeURI()
encodeURIComponent()
escape()
unescape()


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

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

Object
Function
Boolean
Symbol
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError

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

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

Number
Math
Date


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

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

String
RegExp

البيانات المهيكلةعدل

هذه الكائنات تُمثِّل مجموعةً من الكائنات التي لها فهرس وقيمة.

  • Array
  • JSON

غير ذلكعدل

  • arguments

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

في هذا القسم جميع التعابير البرمجية الموجودة في لغة 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 وجود صفر زوج أو أكثر من المفتاحي والقيم المرتبطة بها (عند تعريف الكائنات).

معاملات الزيادة والنقصانعدل

وهي تتضمن الزيادة (أو النقصان) قبل الإسناد، والزيادة (أو النقصان) بعد الإسناد.

  • A++
  • A--
  • ++A
  • --A

المعاملات الأحاديةعدل

وهي المعاملات التي تجري عمليتها على قيمة واحدة فقط.

  • delete: يحذف خاصيةً من كائن.
  • void: يُقدِّر قيمة التعبير المعطى (expression) ثم يُعيد القيمةundefined.
  • typeof: يُعيد سلسلةً نصية تُشير إلى نوع القيمة التي تليه.
  • + و-: إشارة الزائد والناقص التي تُستخدَم مع القيم العددية Number.
  • ~: معامل NOT الثنائي.
  • !: معامل NOT المنطقي.

المعاملات الرياضيةعدل

المعاملات الرياضية تأخذ القيم العددية وتجري عليها عمليةً ثم تعيد قيمةً واحدةً.

  • +: معامل الجمع.
  • -: معامل الطرح.
  • /: معامل القسمة.
  • *: معامل الضرب.
  • %: معامل باقي القسمة
  • **: معامل رفع العدد إلى قوة.

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

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

inعدل

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

instanceofعدل

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

معاملات المقارنةعدل

  • >: أقل من.
  • <: أكبر من.
  • =>: أقل من أو يساوي.
  • =<: أكبر من أو يساوي.

معاملات المساواةعدل

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

  • ==: معامل المساواة.
  • =!: معامل عدم المساواة.
  • ===: معامل المطابقة.
  • ==!: معامل عدم المطابقة.

المعاملات الثنائيةعدل

تُعامِل المعاملات الثنائية القيم على أنها مجموعة من 32 بت (أصفار وواحدات) وتُعيد قيمًا رقميةً عادية.

  • <<: معامل الإزاحة إلى اليسار.
  • <<: معامل الإزاحة إلى اليمين.
  • <<<: معامل الإزاحة إلى اليمين دون إشارة.
  • &: معامل AND الثنائي.
  • |: معامل OR الثنائي.
  • ^: معامل XOR الثنائي.

المعاملات المنطقيةعدل

تُستخدَم المعاملات المنطقية عادةً مع القيم المنطقية (Boolean)، وتُعيد قيمةً منطقيةً أيضًا.

  • &&: معامل AND المنطقي.
  • ||: معامل OR المنطقي.

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

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

معاملات الإسنادعدل

تُسنِد هذه المعاملات القيمة التي على يسار المعامل بناءً على قيمة ما على يمينه.

  • =: معامل الإسناد.
  • =*: معامل الإسناد والضرب.
  • =/: معامل الإسناد والقسمة.
  • =%: معامل الإسناد وحساب باقي القسمة.
  • =+: معامل الإسناد والجمع.
  • =-: معامل الإسناد والطرح.
  • =>>: معامل الإسناد والإزاحة إلى اليسار.
  • =<<: معامل الإسناد والإزاحة إلى اليمين.
  • =<<<: معامل الإسناد والإزاحة إلى اليمين دون الحفاظ على الإشارة.
  • =&: معامل الإسناد وإجراء عملية AND الثنائية.
  • =^: معامل الإسناد وإجراء عملية XOR الثنائية.
  • =|: معامل الإسناد وإجراء عملية OR الثنائية.

الإسناد بالتفكيكعدل

الاسناد بالتفكيك (destructuring assignment) يسمح بتفكيك القيم الموجودة في المصفوفات أو خاصيات أحد الكائنات إلى متغيرات مستقلة.

  • [a, b] = [1, 2]
  • {a, b} = {a:1, b:2}

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

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

قواعد الجافا سكريبتعدل

وصف برنارد آيخ قواعد الجافاسكريبت بقوله:

تستعير الجافاسكريبت معظم قواعدها من جافا، لكنها كذلك ترثُ من أوك وبيرل. مع بعض التأثير الغير مباشر من قبل لغة سالف.

مثال عن برنامج "أهلا بالعالم":

window.alert("Hello World")

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

يقوم المتصفح بتحميل البرنامج المكتوب بلغة الجافاسكريبت إما مضمّناً داخل صفحة الـ HTML أو من ملف خارجي. تنفذ جميع العمليات التي على جهاز المستخدم — أي ضمن المتصفح الخاص به.

تقوم الجافاسكريبت بإنشاء دوال تفاعلية. وهذا ما تستخدمه العديد من المواقع والصفحات مثل فيسبوك ويوتيوب.

هذا مثال بسيط لصفحة برنامج مضمن داخل الـHTML يقوم بإظهار رسالة "وعليكم السلام" عند الضغط على زر "السلام عليكم":

<html>
 <head><title>مثال</title></head>
 <body dir="rtl">
 <script type="text/javascript">
 function salam(){
 alert("وعليكم السلام");
 ;}
 </script>
 <button onclick="salam();">السلام عليكم</button>
  </body>
</html>

الاستخدام خارج المتصفحعدل

رغم أنه قد تم إنشاء هذه اللغة لتعمل بالكامل في المتصفح، إلا أنه أصبح يمكن استخدامها لإنتاج برامج تعمل خارج المتصفح (Standalone) وذلك بفضل برمجيات مثل:

انظر أيضاعدل

مراجععدل

  1. ^ ECMAScript 2018 Language Specification
  2. ^ معرف فيديو يوتيوب: https://www.youtube.com/watch?v=JxAXlJEmNMg
  3. ^ McCracken، Harry (16 September 2010). "The Unwelcome Return of "Best Viewed with Internet Explorer"". technologizer.com. تمت أرشفته من الأصل في 23 يونيو 2018. اطلع عليه بتاريخ 16 يوليو 2016. 
  4. ^ "System-Declared Uniform Type Identifiers". Mac OS X Reference Library. Apple Inc. تمت أرشفته من الأصل في 28 أغسطس 2010. اطلع عليه بتاريخ 05 مارس 2010. 
  5. ^ "JavaScript - Browser detect". Quirksmode.org. تمت أرشفته من الأصل في 18 مايو 2018. اطلع عليه بتاريخ 24 فبراير 2017. 
  6. ^ Payment, S. (2007). Marc Andreessen and Jim Clark: The Founders of Netscape. Rosen Publishing Group. ISBN 978-1-4042-0719-6. 
  7. ^ Press release announcing JavaScript, "Netscape and Sun announce JavaScript", PR Newswire, December 4, 1995 نسخة محفوظة 10 يوليو 2017 على موقع واي باك مشين.