דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. שאלות בסיסיות ב-js או בכלל בתכנות

שאלות בסיסיות ב-js או בכלל בתכנות

מתוזמן נעוץ נעול הועבר ארכיון code613m
20 פוסטים 3 כותבים 949 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    אהרן
    כתב ב נערך לאחרונה על ידי
    #1

    אני מפעיל פונקציה לדוגמא

    db.get(word, function (err, value) {
    

    עכשיו, אם אין אזכור למשתמש err ה-ide הוא צועק: expected error to be handled.
    ממתי זה מעניין אותו?

    ובכלל, כל העברת ארגמנט ב-js זה handled ??

    פורסם במקור בפורום CODE613 ב01/09/2015 00:54 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • א מנותק
      א מנותק
      אהרן
      כתב ב נערך לאחרונה על ידי
      #2

      שאלה נוספת 🙂

      server.on("request", function (request, response) {
      

      response זו התשובה שנשלחת
      איך היא נשלחת ללא return ??

      פורסם במקור בפורום CODE613 ב01/09/2015 02:18 (+03:00)

      תגובה 1 תגובה אחרונה
      0
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #3

        @אהרן

        עכשיו, אם אין אזכור למשתמש err ה-ide הוא צועק: expected error to be handled.
        ממתי זה מעניין אותו?

        ובכלל, כל העברת ארגמנט ב-js זה handled ??

        כתב חידה קשה מאוד. לא מבין אפי' מילה.

        פורסם במקור בפורום CODE613 ב01/09/2015 10:38 (+03:00)

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        0
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          @אהרן

          שאלה נוספת 🙂

          server.on("request", function (request, response) {})
          

          response זו התשובה שנשלחת
          איך היא נשלחת ללא return ??

          ספק אם הבנתיך. הקוד שאתה מציג זה הרשמה להאזנה לאיוונט, לפי הנהוג במימוש קלאסי של תבנית Observer pattern (ראה בויקי עברית).
          כשהserver מקבל reqest הוא עובד בלולאה על הפונקציות שנשלחו לו (ע"י פונקציות הon) ומפעיל אותם תוך השמת הפרמטרים הנדרשים.

          פורסם במקור בפורום CODE613 ב01/09/2015 10:44 (+03:00)

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          1
          • א מנותק
            א מנותק
            אהרן
            כתב ב נערך לאחרונה על ידי
            #5

            @דוד ל.ט.

            @אהרן

            עכשיו, אם אין אזכור למשתמש err ה-ide הוא צועק: expected error to be handled.
            ממתי זה מעניין אותו?

            ובכלל, כל העברת ארגמנט ב-js זה handled ??

            כתב חידה קשה מאוד. לא מבין אפי' מילה.

            יש פונקצית קולבק כזו

            function (err, value) {
              if (err) return console.log('Ooops!', err) // likely the key was not found
              console.log(value)
            }
            

            עכשיו אם אני מוחק את השורה הזו

            if (err) return console.log('Ooops!', err)
            

            ה-ide צועק שגיאה expected error to be handled, ככל שאני מבין הכוונה שאני לא מממש את הארגומנט err שמועבר לפונקציה.
            למה זה מעניין אותו? הוא הרי אפילו לא מצפה שאכניס בארגומנט הזה ערך או משהו.
            נכון יותר: אני מרגיש שזה לא ארגומנט רגיל, או שלפונקצית קולבק יש התנהגויות מיוחדות או כל דבר אחר שאני מפספס.

            אפשרות נוספת, הכל רגיל, רק שבפונקציה שמריצה את פונקצית הקול-בק יש התניה מפורשת שחייב להיות בדיקת ה-error.

            באמת עשיתי מאמץ להתבטא ברור.. מקווה שהצלחת 🙂
            תודה רבה!

            פורסם במקור בפורום CODE613 ב03/09/2015 22:39 (+03:00)

            תגובה 1 תגובה אחרונה
            0
            • א מנותק
              א מנותק
              אהרן
              כתב ב נערך לאחרונה על ידי
              #6

              @דוד ל.ט.

              @אהרן
              שאלה נוספת 🙂

              server.on("request", function (request, response) {})
              

              response זו התשובה שנשלחת
              איך היא נשלחת ללא return ??

              ספק אם הבנתיך. הקוד שאתה מציג זה הרשמה להאזנה לאיוונט, לפי הנהוג במימוש קלאסי של תבנית Observer pattern (ראה בויקי עברית).
              כשהserver מקבל reqest הוא עובד בלולאה על הפונקציות שנשלחו לו (ע"י פונקציות הon) ומפעיל אותם תוך השמת הפרמטרים הנדרשים.

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

              אני התכוונתי לשאול על פונקצית הקול-בק שמקבל שני ארגומנטים req res אחד מיועד להכניס לפונקציה ואחד לקבל מהפונקציה.
              איך השמת ערכים בארגומנט (שהוא כמובן אוביקט) המקבל משפיע מחוץ לפונקציה? הוא מכיל בתוכו פונקצית notify (ואם זו האפשרות הנכונה, איך הפונקציה מבחינה בשינוי?) ? או שיש הגדרה שאותו משתנה חוזר ולא העתק ממנו (שבפסקל נדמה לי שמצמידים @לשם המשתנה) ?

              שוב תודה על הזמן היקר והכוחות שאתם משקיעים עבור אחרים!

              פורסם במקור בפורום CODE613 ב03/09/2015 22:52 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • א מנותק
                א מנותק
                אהרן
                כתב ב נערך לאחרונה על ידי
                #7

                כהשלמה לשאלות הקודמות
                ראיתי קוד כזה בערך (כותב מהזכרון)

                on.(data, console) {
                on.(console, console.log('bla')) {
                

                console זה ארוע ?? הרי הוא אוביקט שמחזיק שלל פונקציות!

                עוד משהו דומה
                זה המימוש הסטנדרטי:

                http = require("http"); //The require
                
                var MyServer = http.createServer(function(request, response) {
                

                והוא שווה ל:

                var server = http.createServer();
                
                server.on("request", function (request, response) {
                

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

                פורסם במקור בפורום CODE613 ב03/09/2015 23:34 (+03:00)

                תגובה 1 תגובה אחרונה
                0
                • א מנותק
                  א מנותק
                  אהרן
                  כתב ב נערך לאחרונה על ידי
                  #8
                  function myModule() {
                      ...
                  }
                  var myModule = new myModule(); //creating the instanceמה זה עושה ??
                  

                  מה עושה שמכניסים את אותו משתנה לתוכו?

                  פורסם במקור בפורום CODE613 ב04/09/2015 00:50 (+03:00)

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD מחובר
                    dovidD מחובר
                    dovid ניהול
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @אהרן

                    יש פונקצית קולבק כזו

                    function (err, value) {
                      if (err) return console.log('Ooops!', err) // likely the key was not found
                      console.log(value)
                    }
                    

                    עכשיו אם אני מוחק את השורה הזו

                    if (err) return console.log('Ooops!', err)
                    

                    ה-ide צועק שגיאה expected error to be handled, ככל שאני מבין הכוונה שאני לא מממש את הארגומנט err שמועבר לפונקציה.
                    למה זה מעניין אותו? הוא הרי אפילו לא מצפה שאכניס בארגומנט הזה ערך או משהו.
                    נכון יותר: אני מרגיש שזה לא ארגומנט רגיל, או שלפונקצית קולבק יש התנהגויות מיוחדות או כל דבר אחר שאני מפספס.

                    אפשרות נוספת, הכל רגיל, רק שבפונקציה שמריצה את פונקצית הקול-בק יש התניה מפורשת שחייב להיות בדיקת ה-error.

                    באמת עשיתי מאמץ להתבטא ברור.. מקווה שהצלחת 🙂
                    תודה רבה!

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

                    פורסם במקור בפורום CODE613 ב04/09/2015 10:43 (+03:00)

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    1
                    • dovidD מחובר
                      dovidD מחובר
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @אהרן

                      function myModule() {
                          ...
                      }
                      var myModule = new myModule(); //creating the instanceמה זה עושה ??
                      

                      מה עושה שמכניסים את אותו משתנה לתוכו?

                      כשכותבים new לפני קריאה לפונקציה, אז:

                      1. במידה והפונקציה מחזירה אובייקט (לא פרימיטיבי כטקסט ומספר כלומר כזה שהלוג שלו מיוצג עם סוגריים {}), אז הוא מוחזר למשתנה.
                      2. במידה ואיננה מחזירה אובייקט (או שאיננה מחזירה כלום או טיפוס פרימיטיבי) אז נוצר אובייקט חדש שמהווה "קרקע" (בתכנותית: מופע, instance) לthis שבפונקציה. בלי ה"קרקע" הזו הפונקציה הנקראת "דורכת" על "קרקע" הפונקציה הקוראת.

                      הדגמה:

                      function func() {
                      	this.a = "variable ";
                      	return "function result...";
                      }
                      
                      var resultWithoutNew = func();
                      console.log(resultWithoutNew); //function result...
                      console.log(a); // variable
                      console.log(resultWithoutNew.a); // undefined
                      
                      a = 123;
                      
                      var resultWithNew = new func();
                      console.log(resultWithNew); // { a: 'variable ' }
                      console.log(a); // 123
                      console.log(resultWithNew.a); // variable
                      

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

                      פורסם במקור בפורום CODE613 ב04/09/2015 12:35 (+03:00)

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      1
                      • א מנותק
                        א מנותק
                        אהרן
                        כתב ב נערך לאחרונה על ידי
                        #11

                        אשמח תשפרט את הרקע, מי צועק ואיפה בדיוק.

                        ide c9

                        לכידה.JPG

                        פורסם במקור בפורום CODE613 ב04/09/2015 13:29 (+03:00)

                        תגובה 1 תגובה אחרונה
                        0
                        • dovidD מחובר
                          dovidD מחובר
                          dovid ניהול
                          כתב ב נערך לאחרונה על ידי
                          #12

                          תלונתו היא שאתה ניגש לvalur בלי לבדוק קודם שהerror ריק (אם תוסיף if (!err) אזי הוא ישתוק כנראה), אבל נשגב מבינתי איך ה"חוזה" הזה מוכר לIDE.

                          פורסם במקור בפורום CODE613 ב06/09/2015 11:15 (+03:00)

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          תגובה 1 תגובה אחרונה
                          0
                          • א מנותק
                            א מנותק
                            אהרן
                            כתב ב נערך לאחרונה על ידי
                            #13

                            ובהרצה זה כן מובן?

                            פורסם במקור בפורום CODE613 ב06/09/2015 11:16 (+03:00)

                            תגובה 1 תגובה אחרונה
                            0
                            • dovidD מחובר
                              dovidD מחובר
                              dovid ניהול
                              כתב ב נערך לאחרונה על ידי
                              #14

                              @אהרן

                              ובהרצה זה כן מובן?

                              היינו הך.

                              פורסם במקור בפורום CODE613 ב06/09/2015 11:20 (+03:00)

                              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                              בכל נושא אפשר ליצור קשר dovid@tchumim.com

                              תגובה 1 תגובה אחרונה
                              0
                              • א מנותק
                                א מנותק
                                אהרן
                                כתב ב נערך לאחרונה על ידי
                                #15

                                אז עוד שאלה על JS......
                                לשאלה הזו יש הרבה חברים 🙂

                                פורסם במקור בפורום CODE613 ב06/09/2015 11:21 (+03:00)

                                תגובה 1 תגובה אחרונה
                                0
                                • א מנותק
                                  א מנותק
                                  אהרן
                                  כתב ב נערך לאחרונה על ידי
                                  #16

                                  @דוד ל.ט.

                                  תלונתו היא שאתה ניגש לvalur בלי לבדוק קודם שהerror ריק (אם תוסיף if (!err) אזי הוא ישתוק כנראה), אבל נשגב מבינתי איך ה"חוזה" הזה מוכר לIDE.

                                  עכשיו מצאתי איך הפונקציה עובדת
                                  באמת עם try (מושג חדש שלא הכרתי עד שהכרת לי)

                                  LevelUP.prototype.get = function (key_, options, callback) {
                                    var self = this
                                      , key
                                  
                                    callback = getCallback(options, callback)
                                  
                                    if (maybeError(this, options, callback))
                                      return
                                  
                                    if (key_ === null || key_ === undefined || 'function' !== typeof callback)
                                      return readError(this
                                        , 'get() requires key and callback arguments', callback)
                                  
                                    options = util.getOptions(options)
                                    key = this._codec.encodeKey(key_, options)
                                  
                                    options.asBuffer = this._codec.valueAsBuffer(options)
                                  
                                    this.db.get(key, options, function (err, value) {
                                      if (err) {
                                        if ((/notfound/i).test(err) || err.notFound) {
                                          err = new NotFoundError(
                                              'Key not found in database [' + key_ + ']', err)
                                        } else {
                                          err = new ReadError(err)
                                        }
                                        return dispatchError(self, err, callback)
                                      }
                                      if (callback) {
                                        try {
                                          value = self._codec.decodeValue(value, options)
                                        } catch (e) {
                                          return callback(new EncodingError(e))
                                        }
                                        callback(null, value)
                                      }
                                    })
                                  }
                                  

                                  פורסם במקור בפורום CODE613 ב06/09/2015 21:32 (+03:00)

                                  תגובה 1 תגובה אחרונה
                                  0
                                  • א מנותק
                                    א מנותק
                                    אהרן
                                    כתב ב נערך לאחרונה על ידי
                                    #17

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

                                    פורסם במקור בפורום CODE613 ב06/09/2015 21:41 (+03:00)

                                    תגובה 1 תגובה אחרונה
                                    0
                                    • dovidD מחובר
                                      dovidD מחובר
                                      dovid ניהול
                                      כתב ב נערך לאחרונה על ידי
                                      #18

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

                                      פורסם במקור בפורום CODE613 ב07/09/2015 10:06 (+03:00)

                                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                      תגובה 1 תגובה אחרונה
                                      1
                                      • M מנותק
                                        M מנותק
                                        magicode
                                        כתב ב נערך לאחרונה על ידי
                                        #19

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

                                        פורסם במקור בפורום CODE613 ב08/09/2015 14:58 (+03:00)

                                        תגובה 1 תגובה אחרונה
                                        4
                                        • א מנותק
                                          א מנותק
                                          אהרן
                                          כתב ב נערך לאחרונה על ידי
                                          #20

                                          @דוד ל.ט.

                                          @אהרן

                                          function myModule() {
                                              ...
                                          }
                                          var myModule = new myModule(); //creating the instanceמה זה עושה ??
                                          

                                          מה עושה שמכניסים את אותו משתנה לתוכו?

                                          כשכותבים new לפני קריאה לפונקציה, אז:

                                          1. במידה והפונקציה מחזירה אובייקט (לא פרימיטיבי כטקסט ומספר כלומר כזה שהלוג שלו מיוצג עם סוגריים {}), אז הוא מוחזר למשתנה.
                                          2. במידה ואיננה מחזירה אובייקט (או שאיננה מחזירה כלום או טיפוס פרימיטיבי) אז נוצר אובייקט חדש שמהווה "קרקע" (בתכנותית: מופע, instance) לthis שבפונקציה. בלי ה"קרקע" הזו הפונקציה הנקראת "דורכת" על "קרקע" הפונקציה הקוראת.

                                          הדגמה:

                                          function func() {
                                          	this.a = "variable ";
                                          	return "function result...";
                                          }
                                          
                                          var resultWithoutNew = func();
                                          console.log(resultWithoutNew); //function result...
                                          console.log(a); // variable
                                          console.log(resultWithoutNew.a); // undefined
                                          
                                          a = 123;
                                          
                                          var resultWithNew = new func();
                                          console.log(resultWithNew); // { a: 'variable ' }
                                          console.log(a); // 123
                                          console.log(resultWithNew.a); // variable
                                          

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

                                          לא מבין [כמעט] כלום

                                          this.a = "variable ";
                                          

                                          שווה ל

                                          func.a = "variable ";
                                          

                                          ?

                                          איך

                                          console.log(a); // variable
                                          a = 123;
                                          

                                          ממתי יש משתנה a?
                                          הרי a הוא רק תכונה (property) של func והעתקים ממנו?!


                                          var resultWithoutNew = func();
                                          

                                          אם כן אני צודק שיש 3 'רמות' של העברה בין פונקציה לפונקציה

                                          resultWithNew = func();
                                          resultWithNew = new func();
                                          resultWithNew = func;
                                          
                                          1. מעביר רק את התוצאה.
                                          2. רק את התכונות (במידה ומדובר באוביקט).
                                          3. את כל הפונקציה במלואה.
                                            ?

                                          אם משתמשים באפשרות 3, ואז שעכשיו מכיל בתוכו

                                          this.a = "variable ";
                                          

                                          מי שם ה-this ?

                                          סליחה על ההתקפה ותודה על הסבלנות 🙂

                                          פורסם במקור בפורום CODE613 ב18/09/2015 16:48 (+03:00)

                                          תגובה 1 תגובה אחרונה
                                          0

                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום