/ / جافا سكريبت: وظيفة في وظيفة. لغة برمجة JS

جافا سكريبت: وظيفة في وظيفة. لغة برمجة JS

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

ومع ذلك ، لا يجب تمثيل مورد الويب الحديث من خلال مجموعة من الصفحات التي تم إنشاؤها بواسطة الخادم وتحديثها بواسطة المستعرض (JS + AJAX).

وظيفة جافا سكريبت في وظيفة

يمكن أن يكون مورد الويب في الوقت الذي يصل فيه الزائر عبارة عن رأسين للبروتوكول ، ونص صغير في "الرأس" ، وسطور قليلة من التعليمات البرمجية في "نص" وهذا كل شيء. الباقي هو "فكر في»أثناء عمل الزائر - هذا موقع مثالي أو يسعى جاهداً ليكون موقعًا.

مكان الوصف وجوهر الوظائف

جافا سكريبت هي الخبرة المكتسبة على مدى عقود عديدة.لديها تاريخ تطور كبير ، وفريق مؤهل حديث من المبدعين والمطورين. اللغة مدروسة جيدًا وموثوقة وجميلة وتعطي فرصة حقيقية للمطورين لكتابة كود لائق وتحسين أنفسهم.

خطأ جافا سكريبت العملية غير آمنة

مفهوم الخوارزمية خارج الوظيفة غائب هناالمبدأ. بالطبع ، يمكن للمطور لصق البرنامج النصي في أي مكان في الصفحة ، ووضع الرمز فيه وسيتم تنفيذه. ولكن ما هي النقطة في التعليمات البرمجية التي يتم تنفيذها مرة واحدة فقط: عند التحميل (إعادة التحميل) الصفحة؟ ما لم تتمكن من تعيين القيم الأولية لبعض المتغيرات غير الهامة.

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

ليس من الضروري على الإطلاق أن تعمل الوظيفةاستدعاء وظيفة أخرى مباشرة ؛ يمكن أن يتم ذلك بشكل غير مباشر من خلال توليد الشفرة الديناميكية. يتخذ الزائر قرارًا في إطار هذا الرمز ويتم تشغيل نظام مختلف تمامًا للوظائف.

ديناميات وظيفية

Функциональная динамика - это вовсе не только и ليس الكثير من المعالجات المعينة لعناصر الصفحة ، فهذه هي الوظائف التي تشكل عناصر الصفحة ، حسنًا ، يمكن للمعالجات المباشرة أيضًا أن تتغير.

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

يحدث الإجراء على الصفحة اعتمادًا على عناصره وسلوك الزائر عليه. تؤدي حركات الماوس وأزرار لوحة المفاتيح والنقرات وأحداث العناصر وظروف أخرى إلى إطلاق الوظائف الضرورية.

في البداية ، لا يوجد تسلسل ولا يوجد توازي. هناك رد فعل مناسب لمورد الويب للأحداث. تعتمد سرعة أداء جافا سكريبت لوظيفة معينة على العديد من العوامل التقنية (منطق الكمبيوتر وخطوط الاتصال) والعوامل الدلالية (منطق الخوارزمية ، منطقة الموضوع ، معنى المهمة).

في الواقع ، يمكن القول أن شيئًا ما نجحفي موازاة ذلك ، ولكن شيئًا ما سيتحقق بعد شيء ، ولكن لا يوجد معنى خاص في ذلك. من المهم أن تكون وظائف JavaScript هي القدرة على إنشاء استجابة مناسبة لإجراءات الزوار.

هذا تفكير جديد في التنمية: معالجة المعلومات الموزعة في أحشاء متصفح واحد!

تركيب المتغيرات والوظائف

يتم وضع متغيرات جافا سكريبت في علامة"نص" ، وفي نص الوظيفة. يتم تعريف الوظائف بنفس الطريقة. لا يوجد معنى خاص في كتابة دالة أخرى داخل دالة ، ولكن هذا قد يكون ضروريًا لأسباب مختلفة ومبررة تمامًا.

يبدأ وصف الوظيفة في الحالة العامة بالكلمة الرئيسية "دالة" ، متبوعة باسمها ، وقائمة من الوسيطات بين قوسين ، مفصولة بفاصلة ، ونص الدالة بين أقواس متعرجة.

وظيفة تمرير جافا سكريبت لتعمل

يصف هذا المثال وظيفتين توفران اتصال AJAX بين الصفحة والخادم. تم وصف متغير scXHR أعلاه ، لذا فهو متاح في كل من InitXML وداخل WaitReplySC.

اسم الوظيفة ومعلمة الدالة

تم تقديم الخيار غير المتزامن هنا عنديتم استدعاء وظيفة JavaScript في الوظيفة بعد استجابة الخادم. في نفس الوقت ، بعد تلقي استجابة من الخادم ، يصل WaitReplySC إلى علامات الصفحة ويملأها بالمعلومات المستلمة ويستدعي الوظائف الأخرى التي قد تبدأ الطلب التالي إلى الخادم.

من المهم أيضًا أن نلاحظ هنا أن WaitReplySC هي وظيفة. لكن في الخط scXHR.onreadystatechange = WaitReplySC يتم تمريره كمعلمة.هذه قاعدة عامة لتمرير الوظائف إلى وظائف أخرى كمعلمات. وأشار إلى الأقواس ومرر معلماتهم - سيتم تنفيذ الوظيفة على الفور. مرت الاسم فقط ، فماذا. سيتم إجراء مكالمة وظيفية من قبل الشخص الذي تلقى اسمها.

تسمح الوظيفة التي يتم تنفيذها من خلال AJAX استدعاء وظيفة JavaScript من خلال البيانات الواردة من الخادم. في الواقع ، عند إرسال طلب إلى الخادم ، قد لا تعرف هذه الوظيفة أو تلك الوظيفة حتى الوظيفة التي تصل إليها وبأي معلومات.

الخروج من دالة ونتائجها

В теле функции можно писать любые операторы اللغة ، التي ، في الواقع ، مخصصة لهذا الغرض. تتوفر المتغيرات داخل الوظيفة الموصوفة داخلها وخارجها ، ولكن ليست تلك الموضحة في الوظائف الأخرى.

استدعاء وظيفة جافا سكريبت

إذا كنت تريد أن تعود الوظيفةنتيجة لذلك ، يمكنك استخدام عامل إرجاع JavaScript: return. يمكن أن يكون هناك عدد كافٍ من عبارات الإرجاع في جسم الوظيفة. ليس من الضروري على الإطلاق أن يقوموا جميعًا بإرجاع نفس النوع من النتائج.

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

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

الحجج الوظيفية

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

متغيرات جافا سكريبت

متغير الوسائط متاح داخل الوظيفة ، امتلاك الممتلكات الطول. يمكنك الرجوع إلى أي وسيطة دالة عبر الوسيطات [0] ، الوسيطات [1] ، ... حتى آخر وسيطات [arguments.length-1].

تغيير حجة الوظيفة هو حقا في الداخلوظيفة ، ولكن ليس خارجها. لتغيير شيء ما خارج الوظيفة ، تحتاج إلى استخدام عامل إرجاع JavaScript ، والذي من خلاله تمرر القيمة المطلوبة إلى الخارج.

بعد انتهاء الوظيفة ، كل شيءارتبطت بتنفيذه ، سيتم تدميرها. أثناء التنفيذ ، يمكن للدالة تغيير المتغيرات الخارجية ، باستثناء تلك الموصوفة في وظائف أخرى ، بما في ذلك المتغيرات الداخلية.

Arguments لها خاصية callee ذلكالغرض منه هو استدعاء وظيفة يتم تنفيذها في وقت معين. إذا اتصلت بنفسها ، فسيسمح لك متغير JavaScript للوظيفة في الوظيفة بتنفيذ العودية.

باستخدام الوظائف

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

يمكن أن تخدم وظيفة واحدة عناصر صفحة متعددة وأحداث متعددة. باستخدام المعلمة "this" ، يمكنك تمرير المعلومات إلى الوظيفة من حيث تم استدعاؤها.

الاستخدام الكلاسيكي لوظائف JS -معالجات الأحداث على العناصر. في هذا المثال ، سيتم استدعاء الوظيفة scfWecomeGo () أو scfWelcomeCancel () في نموذج تسجيل الدخول / الخروج للزائر ، وعند تحديد الوضع ، scfMenuItemClick (هذا).

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

في الحالة الأخيرة ، يتم تمرير المعلمة "هذا" ،والذي يسمح لك باكتشاف المغنية التي نشأت منها المكالمة بأعجوبة. بشكل عام ، تم زرع JavaScript جيدًا في DOM ويسمح لك بالتنقل عبر عناصرها بشكل مريح للغاية ، لجمع المعلومات الضرورية التي يمكن أن تكون ديناميكيات الصفحة ببساطة غير متوقعة.

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

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

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

حول التفكير الموزع

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

وظائف مجموعة جافا سكريبت

في JavaScript ، يمكن أن يكون تنفيذ الوظيفةمؤجل حتى حدث ما ، ويمكن أن يكون هناك العديد من هذه الوظائف ، وتميل الأحداث إلى الانتشار وتقع في "نطاق" معالجات مختلفة.

خطأ جافا سكريبت العملية غير آمنة

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

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

تنفيذ وظيفة جافا سكريبت

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

الحجج الوظيفية والنتائج

يتيح لك JavaScript تحويل التعليمات البرمجية الخاصة بك إلىدولة "تعمل بكامل طاقتها". من الطبيعي أن تكون وسيطة الوظيفة دالة. يُسمح بالمتغير عندما ترجع الدالة دالة. تأخذ JavaScript هذا بهدوء تام.

هذه آلية جيدة ، ولكن تنفيذها معقد للغاية. من الناحية الفنية ، كل شيء مسموح به ، من الناحية المعنوية ، فقط المطور المؤهل يمكنه توفير منطق نقل "الوظيفية".

وظيفة تمرير جافا سكريبت لتعمل

عندما تكون في JavaScript ، وظيفة داخل دالة - أينما تذهبذهب ، ولكن عندما تنشئ دالة دالة ، وتلك وظيفة أخرى ، من الصعب جدًا تتبع المنطق. في الواقع ، السؤال لا يتعلق بتطبيق المؤهلات ، إنه يتعلق بالحصول على نتيجة آمنة وصحيحة.

قلق المطور واضح وبسيط. هناك مشكلة ، أنت بحاجة إلى حل ، وليس خطأ مثل "خطأ جافا سكريبت العملية غير آمنة" ، أو شاشة فارغة ، أو إيقاف محرك المتصفح بالكامل.

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

تنفيذ الكود الذي تم إنشاؤه

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

إرجاع دالة جافا سكريبت

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

مثال الكاتب ليس صورة.

فارق بسيط في نموذج JavaScript للوظيفة في الوظيفة

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

مثال كلاسيكي على العودية: حساب العامل. من الصعب جدًا كتابة خوارزمية تتكرر ، ولكن من السهل جدًا تجاوز حدود القيمة. العامل ينمو بسرعة كبيرة.

ومع ذلك ، فإن كلاً من العودية والدالة التي تستدعي دالة أخرى يمكنها إجراء رد اتصال صالح هي القاعدة.

على سبيل المثال ، جدول عادي. قد تكون هناك جداول أخرى في الجدول. لا يمكن تقييد التعشيش. تعد كتابة مجموعة منفصلة من الوظائف لكل طاولة بمثابة رفاهية كبيرة.

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

يحب:
0
الوظائف الشعبية
التطور الروحي
طعام
ذ