מחשביםתכנות

JavaScript: פונקצית פונקציה. שפת תכנות JS

רעיונות תוכן דינמי להקים אינטרנט משאבים הפכו לנורמה. דפים סטטיים ועיצוב אתרי תבניות ולבסוף השלימו את משימתם.

עם זאת, משאב האינטרנט מודרני אינו חייב להיות מיוצג על ידי קבוצה של דפים שנוצרו על ידי השרת ולרענן את הדפדפן (JS + AJAX).

מאגר מבוסס אינטרנט ברגע ההגעה של המבקר יכול להיות כמה כותרים בשביל הפרוטוקול, טקסט כלשהו «הראש», קווים אחדים של קוד «הגוף» וכל. שאר "להרות" בתהליך של המבקר - הוא אתר אידיאלי, או שואפים להיות אחת.

מניח את התיאור ואופי הפונקציות

опыт, наработаный многими десятилетиями. JavaScript - זהו עשורים narabotany ניסיון. יש לה היסטוריה משמעותית של פיתוח, מפתחי יוצרי צוות מוסמך מודרניים. גם שפת מחשבה, אמין, יפה ונותן הזדמנות אמיתית למפתחים לכתוב קוד עבור שיפור עצמי הגון.

הרעיון של אלגוריתם הוא פונקציה כאן אינה קיימת באופן עקרוני. כמובן, היזם יכול בכל מקום בדף להכניס קוד סקריפט כדי להכניס אותו והוא יבוצע. страницы? אבל מה הטעם בקוד, אשר מבוצע רק פעם אחת: בעת טעינה (טעה מחדש) את הדף? האם אפשר להגדיר את הערכים ההתחלתיים של מה כמה משתנים אפסיים.

סקריפט - המקום הזה הוא התיאור הנכון של משתנים ופונקציות, ולא טוב חתיכת קוד שנכתב לשמה. זהו סט של פונקציות חיוני וחשוב, אולי - החיבור הישיר ההדדי שלהם, אבל לעתים קרובות יותר זה שונה. תיאור מקום של הפונקציה ואת המקום של היישום שלה הוא לא אותו הדבר.

אין צורך שהפונקציה תיקרא פונקציה אחרת ישירות, אבל זה יכול להיעשות באופן עקיף דרך ההיווצרות של קוד דינמי. מבקר לוקח החלטה בתוך הקוד הזה עובד די פונקציות מערכת שונות.

דינמיקה פונקציונלית

דינמיקה פונקציונלית - הוא לא רק ולא כל כך הרבה מטפלים שהוקצו אלמנטים בדף הן פונקציות יוצרות האלמנטים של הדף, ושל מפעיליו המיידיים, מדי, יכול לשנות.

הפעולה מתבצעת על הדף, תלוי מהם היסודות ואת התנהגות מבקרים על זה. התנועה של העכבר, המקלדת, כפתורים, קליקים, אירועים, פריטים ונסיבות אחרות להוביל את ההשקה של התפקידים הנדרשים.

במקור אין עקביות ואין מקבילים. יש מענה הולם לאירועים-משאב האינטרנט. איך JavaScript המהיר ממלא פונקציה מסוימת זה תלוי רבים טכני (מחשבים, קווי תקשורת) סמנטי (אלגוריתם לוגיקה, אזור נושא, כלומר הבעיה) גורמים.

למעשה, אפשר לטעון שמשהו עבד במקביל, אבל משהו יהפוך אחרי משהו, אבל המשמעות של המיוחד הזה היא לא. חשוב כי פונקציית JavaScript - היא הזדמנות ליצור מענה הולם הפעולות של המבקר.

חשיבה חדשה זו בתכנון: עיבוד מבוזר במעמקי דפדפן יחיד!

התחביר משתנים ופונקציות

JavaScript-משתנה ממוקמים «תסריט» תג, ובגוף של הפונקציה. פונקציות מוגדרות באותו אופן. משמעות מיוחדת לכתוב בתוך הפונקציה יש פונקציה נוספת, אבל זה עשוי להיות נחוץ מסיבות שונות, וזה די הגיוני.

תיאור של הפונקציה מתחיל בדרך כלל עם «פונקציה» מילות מפתח, ואחריו שמו, את רשימת הטיעונים בסוגריים, מופרדות בפסיקים, והגוף הפונקציה בסוגריים מסולסלים.

בדוגמא זו, שתי פונקציות מתוארות הספק-חליפי AJAX בין הדף לבין השרת. חלקית scXHR שתואר לעיל, משום זמין בשתי InitXML, ובתוך WaitReplySC.

הפונקציה שם הפרמטר "פונקציה"

יש כבר הציג את הגרסה אסינכרוני כאשר פונקציית JavaScript פונקציה נקראת אחרי התגובה של השרת. לפיכך, קבלת תגובה מהשרת, WaitReplySC כניסות תג הדף, ממלא את המידע שנתקבל גורם פונקציות אחרות, אשר עשוי גם ליזום את הבקשה הבאה לשרת.

כאן חשוב גם לציין כי WaitReplySC - פונקציה. scXHR.onreadystatechange = WaitReplySC она передается как параметр. אבל בתור scXHR.onreadystatechange = WaitReplySC זה מועבר כפרמטר. פונקצית העברה ככלל זו לפונקציות אחרות כפרמטרים. בסוגריים מחודדים, שהעניקו להם הפרמטר שלה (הים) - הפונקציה תבוצע מייד. מסופר על ידי שם רק, גם אז מה. פונקצית שיחה תהפוך את זה שהכניס את שמה.

הפונקציונאליות מיושמת באמצעות AJAX, מאפשרת לך לקרוא לפונקצית JavaScript באמצעות הנתונים המתקבלים לשרת. למעשה, שליחת בקשה אל השרת, אחד או תכונה אחרת לא יכול בכלל "לדעת" אשר מתפקדים היא פונה, ועם איזה מידע.

פונקציה מתוך ואת התוצאה שלה

הגוף של הפונקציה, אתה יכול לכתוב כל מפעילי שפה, אשר, למעשה, על זה מיועד. תכונות בפנים הם משתנים הכריזו בתוך ומחוץ, אך לא לאלה המתוארות פונקציות אחרות.

אם אתה רוצה את הפונקציה להחזיר תוצאה, אתה יכול להשתמש במשפט חזרת JavaScript: חזרה. הגוף של הפונקציה עשוי להיות מספר מספיק של הצהרות בתמורה. אין צורך שכל אחד מהם יחזירו את התוצאה מאותו הסוג.

בדרך כלל, מפתחי נערץ ההזדמנות הזו, בהתאם למצב, מחליטים לסגת מן הפונקציה בהקדם האפשרי.

אין צורך לרוץ דרך האלגוריתם השלם של פונקציות, כאשר אתה יכול לצאת מוקדם יותר.

טיעוני פונקציה

הטיעונים הם עברו לרשימת פונקציה, מופרדות בפסיקים, מוקפים בסוגריים, והם רק אחרי שמה. נימוקי שמות משתנים, אבל אתם יכולים להעביר ערכים ישירות. כדי להעביר פונקציה JavaScript בתוך פונקציה, אתה רק צריך לציין את שמו בלי סוגריים.

בתוך הפונקציה הוא טיעונים משתנים זמינים, שבו יש נכס אורך. אתה יכול להתייחס לכל פונקצית טיעון באמצעות טיעונים [0], טיעונים [1], ... לטענות האחרונות [arguments.length-1].

שינוי הפונקציה של הטיעון הוא באמת בתוך הפונקציה אבל לא מחוץ לה. על מנת לשנות משהו מחוץ לתפקיד, המפעיל חייב להשתמש בתמורת JavaScript, שדרכה עובר את הערך הנדרש מבחוץ.

לאחר הפונקציה מסתיימת, כל מה שהיה קשור ביצועה, יושמד. במהלך ביצוע הפונקציה עשוי לשנות המשתנים החיצוניים, למעט אלה המתוארים פונקציות אחרות, כוללים אלה בפנים.

יש לנו ויכוחים רכוש callee, אשר נועדה לקרוא לפונקציה כי מתבצעת בזמן נתון. אם הגורם עצמו, גרסת ה- JavaScript של הפונקציה בפונקציה תיישם רקורסיה.

שימוש בפונקציות

הדאגה העיקרית של הפונקציות - לשרת את דפדפן האירוע. כדי לעשות זאת כמעט מדי בתג יש היכולת לציין שם אירוע ותפקוד של הייצור שלה. באפשרותך לציין מספר אירועים, אבל כל אירוע מצוין רק פונקציה אחת.

פונקציה אחת יכולה להתמודד אלמנטים בדף מרובים וכמה אירועים. באמצעות אפשרות «זו», אתה יכול להעביר את פונקצית המידע היכן הוא נקרא.

השימוש הקלאסי של JS-פונקציות - מטפל אירועים על אלמנטים. בדוגמה זו scfWecomeGo () פונקציה או scfWelcomeCancel () נקרא בצורה קלט / פלט של המבקר, וכאשר בחירת מצב ההפעלה scfMenuItemClick (זה).

במקרה האחרון, הפרמטר שהועבר «זו», המאפשר לך ללמוד בנס ממה היא הדיווה נקראה. למעשה, JavaScript, ולכן הוא מושתל איכותי ה- DOM, והוא כל כך בנוחות מאפשר לך לנווט מרכיביו, כדי לאסוף את המידע הדרוש כי דינמיקת הדפים יכול פשוט להיות בלתי צפויה.

הפונקציה לא חייבת להחזיר מחרוזת, מספר, או פונקציה אחרת. זה יכול להחזיר אלמנט HTML מלא, המהווה את המספר הדרוש של אלמנטים, עם מפעיליהם, האירועים שלהם.

על ידי הצבת אלמנט בדף, היזם יוצר פונקציונלי חדש כי הוא טוב מבחינת לפתרון הבעיה ולפגוש את האינטרסים של המבקרים, אבל די קשה מבחינת ביצוע.

מאז התפתחות כזו מתפקדת במלואה, קל ללכת לאיבוד בתוך קוד הילידים, בשיחות פונקציה, ברגעים שבהם נוצר או שתוכן זה או אחר של הדף. לפני לקיחת בכיוון של התפתחות כזאת, לא לעכב באר לשקול הכל.

על ההפצה של חשיבה

היזם צריך לחשוב ברמה של כל האלמנטים של הדף, בכל מקרה, ויש הצגה ברורה של איך הכל בעצם קורה. קשה, אבל העבודה היא שווה את זה.

ב- JavaScript, הפונקציה עשויה להתעכב עד שאירוע כלשהו, ועל אחת מתכונות הללו עלולות להיות הרבה, ויש אירועי נטייה להתפשט ולהיכנס "התחום נראה" של המעבדים השונים.

בדוגמה זו, אי שם לפני הפונקציה נקראה, אשר יזם תפריט ניווט קובץ פריט. ההנחה היא החלפה, כי הוא בחלון רק שבעה תיקים, אשר ניתן להסירו ומעובד. האם ניתן להעביר כקובץ ידי לחיצה על השורה, ואת מקשי החצים וחוסם שבע שורות.

בכל מקרה יש תפקיד משלו. במילים אחרות, בדוגמה פשוטה זו, אתה צריך לכתוב כמה עשרות תכונות כי יגיבו לאירועים שונים, וחלק מהפונקציות הללו תטפל במגוון אפשרויות ומצבים שהאירועים לא שייכים.

לדוגמא, כאשר הסרת השורה התחתונה חייבת להיות עקור כלפי מעלה. זה ידרוש גם לבצע בחירה חדשה שבשגרה בבירור משאב, או לספור שורות, להשתמש בפונקציית JavaScript על המערך ועל מנת להשיג את המטרה אלגנטית.

הטיעונים ואת התוצאות של פונקציות

JavaScript מאפשר לך להביא קוד למעמד "כל תכונות המלאים". בדרך כלל, כאשר הטענה של הפונקציה היא פונקציה. אפשרות מותרית, הפונקציה מחזירה פונקציה. JavaScript לוקח את זה די בשלווה.

זהו מנגנון טוב, אבל די מסובך ביחס ליישום. מבחינה טכנית מותר מבחינה סמנטית לספק שידור היגיון "פונקציונלי" רק על ידי מפתח מוסמך.

כאשר פונקצית JavaScript בתוך פונקציה - בסדר, אבל כאשר הפונקציה יוצרת פונקציה, וכי אחר, ההיגיון הוא די קשה לעקוב. למעשה, השאלה היא לא האם ליישם את המיומנויות, השאלה היא להשיג תוצאה בטוחה ונכונה.

טיפול Developer ברור ופשוט. יש בעיה, אתה צריך פתרון, לא באג כמו «שגיאת JavaScript המבצע הוא חסר ביטחון» , מסך ריק, או להפסיק כל מנוע הדפדפן.

אם הטענה היא פונקציה, אז המפתחים להעביר משתנה עם מאפיינים מיוחדים, כי הוא לא מספר, לא מחרוזת, לא חפץ. אבל שימוש ויכוח כזה יכול להוביל העובדה לשנות את המשתנים החיצוניים היא התוצאה של ביצוע הפונקציה. בהתאם לשינויים יועברו נאות.

ביצוע של קוד שנוצר

להשתמש בקוד ביצוע שנוצר במהלך קוד עבודה אחרת, זה אפשרי באמצעות «eval». זה לא נחשב להיות פתרון מצוין, אבל לעתים קרובות לא יכול לסבך את הקוד עם פונקציות מיותרות, וכן להגביל את היווצרות קו טריוויאלי של קוד JavaScript ופשוט לבצע אותה.

בדוגמה זו, את הכנס נוצר תפר לתוך div נתיח מידע כלשהו. דיווה ומידע תוכן עבור מספר שונה של עמדות שונות, כי החלטה כזו במצב הזה אינו מספקת מצב מובטח «JavaScript שגיאת המבצע הוא חסר ביטחון» , אך בתקיפות לתת את האפקט הרצוי.

Nuance JavaScript פרדיגמה משמר "פונקציה בפונקציה"

אם אתה יכול לעשות בלי סלסולים, עדיף להשתמש בו. כל אחת מהאפשרויות הללו הם טובים. כמובן, במקרים רבים, זה הפתרון היחיד.

דוגמה קלאסית של רקורסיה: העצרת. זה קשה מספיק כדי לכתוב אלגוריתם יהיה לולאה, אבל זה מאוד פשוט, אתה יכול לדחוף את ערכי המעטפה. העצרת גדלה מהר מדי.

עם זאת, רקורסיה, ובקריאות לפונקציות פונקציה אחרת, אשר יכול להפוך את התקשרות מושכלת - דברים נורמליים.

לדוגמא, שולחן רגיל. ההטבלה האחרת עשויה להיות שולחן. קינון יכול לא להיות מוגבל. כתוב על כל שולחן משלה תכונות - יותר מדי מותרות.

דוגמאות כאלה הן רבות, וכל זאת תהיה בעיה אמיתית דחופה, לא בגלל תכנות. לכן הבעיה נעוצה בעובדה כי ללא סלסולים לא להקים מערכת של פונקציות, לייתר דיוק, הניפוי שלה ותפעול אמין עקב הופכים למעונות JavaScript, ו Developer.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 iw.birmiss.com. Theme powered by WordPress.