حفلة الفصل قبل يومين ، باستثناء الأكل والشرب والاستمتاع بالهراء والنوم ، كان سعيدًا جدًا. كان من الأفضل حقًا الاستمتاع بمفرده من الاستمتاع.
ملاحظة: إذا تخرجت أو كنت على وشك التخرج ، فيمكنك التجمع إذا كان لديك وقت. بعد التخرج ، سيكون لديك القليل من الوقت للالتقاء.
الآن لدي بعض الوقت للنظر إلى شيء ما وتلخيص شيء ما. لأنني نظرت إلى جزء وظيفة JavaScript قبل بضع دقائق ، أخذت الوقت الكافي لتلخيص الأجزاء ذات الصلة من الوظيفة. بالطبع ، بعض الأجزاء فيها هي فهمي. إذا كان هناك أي فهم خاطئ ، فيرجى الإشارة إليه.
في هذا القسم ، سأتحدث إليكم عن بيان إعلان الوظيفة مقدمًا بناءً على فهمي الخاص.
ملاحظة: في بعض الأماكن ، يطلق عليه أيضًا ترويج إعلان الوظيفة. الترجمات مختلفة ، والمعاني هي نفسها ، فقط افهمها. فهم طويل!
قبل الدردشة حول إعلان إعلان الوظيفة مقدمًا ، من الضروري تقديم عدة طرق لتعريف الوظيفة ، والتي يجب أن يكون معظم الأصدقاء على دراية بها. إذا كنت تفهم أو لا تريد أن تفهم ، فالتراجع بسعادة. إذا كنت لا تعرف أو ترغب في التعرف عليه ، فابطئ وابدأ.
طرق لتحديد الوظائف
هناك ثلاث طرق رئيسية لتحديد الوظائف:
1. إعلان الوظيفة
2. تعبير وظيفة التعبير الوظيفي)
3. New Function Constructor
من بينها ، غالبًا ما يتم استخدام طرق تعريف الوظيفة لإعلانات الوظيفة وتعبيرات الوظائف. هاتان الطريقتان لها اختلافات واتصالات خفية للغاية ، ويسهل الخلط بين استخدام هاتين الطريقتين. لذلك ، تلخص هذه المقالة بشكل أساسي نقاط المعرفة ذات الصلة لهذين طريقتان تعريف الوظيفة. بالطبع ، لا يزال موضوع هذه المقالة حول الوظائف مقدمًا.
التنسيق النموذجي لإعلانات الوظيفة:
وظيفة الدالة (Arg1 ، Arg2 ، ...) {<!-وظيفة الجسم->}تعبيرات الوظيفة
• التنسيق النموذجي لتعبيرات الوظيفة:
var variable = function (arg1 ، arg2 ، ...) {<!-function body->}تعبير الوظيفة الذي يحتوي على أسماء (قوسين ، أسماء الوظائف):
var variable = function functionName (Arg1 ، Arg2 ، ...) {<!-وظيفة الوظيفة->}يمكن استخدام تعبيرات الوظيفة بأسماء مثل تلك أعلاه للتكرار:
var variable = functionsname (x) {if (x <= 1) return 1 ؛ إرجاع آخر x*functionName (x) ؛}بيان قبل الجدول الزمني
بيان var مقدما
كان يجب أن يكون الأصدقاء قد سمعوا بالبيان مقدمًا. أود أن أكررها هنا ، لأن البيان مقدمًا هو فرق مهم بين إعلان الوظيفة والتعبير عن الوظيفة ، ومن الأهمية بمكان بالنسبة لنا أن نفهم هذين طريقتان تعريف الوظيفة.
ولكن قبل أن يكون إعلان الوظيفة مسبقًا ، من الضروري القول إن إعلان VAR مقدمًا.
أولا إعطاء الاستنتاج المبكر لبيان فار:
يتم تعريف المتغيرات في البرنامج النصي أو الوظيفة التي تعلن عنها ، وسيتم تطوير بيان الإعلان المتغير إلى أعلى البرنامج النصي أو الوظيفة. ومع ذلك ، لا يزال يتم تنفيذ عملية التهيئة المتغيرة في عبارة VAR الأصلية ، ولا يتم تعريف قيمة المتغير قبل إعلان البيان.
يمكن تلخيص ثلاث نقاط بسيطة من الاستنتاج أعلاه:
1. سيتم تقديم إعلان متغير إلى أعلى الوظيفة ؛
2. إنه مجرد أن يكون الإعلان متقدمًا ، ولم يتم تطوير التهيئة ، ولا يزال تهيئة التهيئة في موقع التهيئة الأصلي ؛
3. قيمة المتغير غير محددة قبل الإعلان.
دعنا نأخذ المثال:
var handsome = 'وسيم' ؛ وظيفة thansometougly () {Alert (وسيم) ؛ var handsome = 'قبيح' ؛ تنبيه (وسيم) ؛} thansometougly () ؛الإخراج الصحيح هو:
الإخراج الأول غير محدد ، ثم الإخراج القبيح.
إخراج الخطأ هو:
الإخراج الأول وسيم ، ثم الإخراج قبيح.
هذا هو بالضبط ما يلعبه الإعلان المتغير مقدمًا. يتم تعريف المتغير المحلي الوسيم في جسم الوظيفة بأكمله. يتم قمع المتغير الوسيم في جسم الوظيفة. أوه لا ، إنه يغطي المتغير العالمي الوسيم الذي يحمل نفس الاسم ، لأن الإعلان المتغير متقدم ، أي أن var وسيم متقدم إلى أعلى الوظيفة ، وهو مثل هذا:
var handsome = 'وسيم' ؛ functionsomeTougly () {var handsome ؛ تنبيه (وسيم) ؛ var handsome = 'قبيح' ؛ تنبيه (وسيم) ؛} thansometougly () ؛لذلك قبل التنبيه (وسيم) ، هناك بالفعل إعلان وسيم Var ، كما ذكر أعلاه
قيمة المتغير غير محددة قبل الإعلان
لذلك فإن الإخراج الأول غير محدد.
وبسبب ما ذكر أعلاه:
إنه مجرد أن يكون الإعلان متقدمًا ، ولم يتم تطوير التهيئة ، ولا يزال يتم تهيئة التهيئة في موقع التهيئة الأصلي.
لذلك الناتج الثاني هو قبيح.
إعلان الوظيفة مقدمًا
الثانيان ، سنبدأ في الدردشة حول إعلان إعلان الوظيفة مقدمًا بالاقتران مع إعلان VAR.
يجب أن يكون الأصدقاء على دراية بالإعلان عن إعلان الوظيفة مقدمًا ، لذلك أعط مثالاً مألوفًا للغاية.
saytruth () ؛ <!-إعلان الوظيفة-> الوظيفة saytruth () {Alert ('myvin هو وسيم.') ؛} saytruth () ؛ <!-تعبير الوظيفة-> var saytruth = function () {تنبيه ('myvin هو وسيم.) ؛}}يعرف جميع الأصدقاء أن طريقة تعريف الوظيفة لإعلان الوظيفة ، أي أن طريقة استدعاء الوظيفة الأولى أعلاه صحيحة ، والحقيقة أن ميفين وسيم. يمكن الإخراج ، لأنه يمكن وضع عبارة استدعاء الوظيفة بعد إعلان الوظيفة. بالنسبة لطريقة تعريف الوظيفة للتعبير عن الوظيفة ، أي أن طريقة استدعاء الوظيفة الثانية أعلاه لا يمكن إخراج النتيجة الصحيحة للميفين وسيم.
جنبا إلى جنب مع ميفين أعلاه وسيم. على سبيل المثال ، يبدو أن استنتاج إعلان الوظيفة مسبقًا سهل الفهم. ليس فقط أنه عند استخدام طريقة تعريف الوظيفة لإعلان الوظيفة ، يمكن وضع استدعاء الوظيفة في أي مكان. نعم ، أنت على حق ، يا صديقي ، لا أعرف كيفية دحضك. ثم دعني أخبرك بضع كلمات أخرى.
مما قاله صديقي
أليست أنه عند استخدام طرق تعريف الوظيفة لإعلانات الوظائف ، يمكن وضع مكالمات الوظائف في أي مكان؟
يمكن أن يؤدي إلى القليل:
عندما يتم تطوير إعلان الوظيفة ، يتم تطوير إعلان الوظيفة وجسم الوظيفة.
و:
يتم تنفيذ إعلانات الوظيفة خلال فترة ما قبل التنفيذ ، أي يتم تنفيذ إعلانات الوظيفة عندما يكون المتصفح جاهزًا لتنفيذ الرمز. نظرًا لأنه يتم تنفيذ إعلان الوظيفة خلال فترة التنفيذ المتوقعة ، لم يعد إعلان الوظيفة يتم تنفيذه خلال فترة التنفيذ (هناك أشخاص قاموا بتنفيذها بالفعل ، ولن يتم تنفيذها بشكل طبيعي).
أعلاه نقطة.
لماذا لا يمكن إعلان التعبير عن الوظيفة مقدمًا
دعنا نتحدث عن شيء آخر: لماذا لا يمكن الإعلان عن تعبيرات الوظيفة مسبقًا مثل إعلانات الوظيفة؟
لحسن الحظ ، أنا أعرف القليل ، وإلا فأنا لا أعرف حقًا كيف يجب أن أجيب؟
مهم ، وفقا لفهمي ، اسمحوا لي أن أشرح لك:
قلنا أعلاه بيان VAR مقدمًا ، انتبه إلى ما ذكرته أعلاه:
إنه مجرد أن يكون الإعلان متقدمًا ، ولم يتم تطوير التهيئة ، ولا يزال يتم تهيئة التهيئة في موقع التهيئة الأصلي.
حسنًا ، دعنا نضع تعبير الوظيفة هنا:
var variable = function (arg1 ، arg2 ، ...) {<!-function body->}تعبيرات الوظائف هي طريقة كتابة تعريفات الوظائف إلى تعبيرات (يبدو أنها مضيعة للوقت ، ولكن هذا فعال في تفسير وفهم أنه لا يمكن الإعلان عن تعبيرات الوظيفة مسبقًا) ، وهو تعيين كائن دالة لمتغير ، لذلك نكتب تعبير الوظيفة مثل هذا:
VAR Variable = 5 رؤية هذا ، ربما يفهم الأصدقاء أن أحدهم سيقوم بتعيين قيمة لمتغير ، والآخر هو تعيين كائن دالة لمتغير. لذلك ، بالنسبة إلى تعبيرات الوظائف ، لن يتم تطوير المهمة المتغيرة ، أي الوظيفة (Arg1 ، Arg2 ، ...) {<!-body-body->} لن يتم تطويرها ، لذلك لا يتم تنفيذ تعريف الوظيفة ، لذلك لا يمكن تعبيرات الوظائف مسبقًا مثل إعلانات الوظيفة.
تحليل الحالة المبكرة لإعلان الوظيفة
نفس الجملة ، الواقع هو من المثال:
saytruth () ؛ if (1) {function saytruth () {Alert ('myvin هو وسيم')} ؛} آخر {function saytruth () {Alert ('myvin is ugly')} ؛}عندما لا يرمي المتصفح خطأً (يرجى اختبار ما إذا كان المتصفح المقابل قد ألقى خطأ. لماذا لا أختبره؟ هل يمكنني أن أقول أنني كسول؟) ، فإن نتيجة إخراج المتصفح هي Myvin هي قبيحة (لا أريد أن أعترف بذلك ، ولكن الحقيقة هي أنه ، هل يجب أن أقرأ أكثر إذا كنت قبيحًا ؟؟؟؟؟
لماذا؟ بالطبع ، كان البيان متقدمًا. نظرًا لأن إعلان الوظيفة متقدم ، سيتم تحليل إعلان الوظيفة قبل تنفيذ المدونة. أمر التنفيذ هو كما يلي: First Parse Function SaytTruth () {Alert ('myvin هو وسيم')} ، وعندما يتم تحليل وظيفة التحليل sealls () {Alert ('myvin is ugly')} ، حيث تجاوز إعلان الوظيفة السابقة. عندما نسمي وظيفة saytruth () ، أي أثناء تنفيذ الكود ، سيتم تجاهل الإعلان ، لذلك سيكون Myvin قبيحًا بشكل طبيعي (يا له من حقيقة قاسية ...). إذا نسيت ، يمكنك أن ترى ما قلته أعلاه:
يتم تنفيذ إعلانات الوظيفة خلال فترة ما قبل التنفيذ ، أي يتم تنفيذ إعلانات الوظيفة عندما يكون المتصفح جاهزًا لتنفيذ الرمز. نظرًا لأنه يتم تنفيذ إعلان الوظيفة خلال فترة التنفيذ المتوقعة ، لم يعد إعلان الوظيفة يتم تنفيذه خلال فترة التنفيذ (هناك أشخاص قاموا بتنفيذها بالفعل ، ولن يتم تنفيذها بشكل طبيعي).
مكالمة قريبة
دعنا نتحدث عن الوظائف المعلنة مقدمًا (التحسين) هنا. آمل أن يكون فهمي والهراء مفيدين لأولئك المحتاجين.
بالطبع ، تنتج الممارسة معرفة حقيقية. لا يزال فهم الأشياء وإدراكها وتطبيقها يكمن في القراءة واستخدام وتلخيص المزيد. أتذكر قولًا مشهورًا يتحدث عن العبارات والممارسات: "دعونا نتحرك ونهتف لبيانات جديدة".
التحليل الموجز أعلاه لإعلانات الوظيفة وتعبيرات الوظائف - بيان إعلان الوظيفة هو كل المحتوى الذي شاركته معك مقدمًا. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.