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

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

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

מההה זההה ????

מתוזמן נעוץ נעול הועבר ארכיון code613m
16 פוסטים 5 כותבים 804 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    אהרן
    כתב ב נערך לאחרונה על ידי
    #1
    // Here I am, brain the size of a planet, and they ask me to write JavaScript...
    function kevinTheNumberMentioner(_){
      l=[]
      /* mostly harmless --> */ with(l) {
    
        // sorry about all this, my babel fish has a headache today...
        for(ll=!+[]+!![];ll<_+(+!![]);ll++) {
          lll=+!![];
          while(ll%++lll);
          // I've got this terrible pain in all the semicolons down my right hand side
          (ll==lll)&&push(ll);
        }
        forEach(alert);
      }
    
      // you're really not going to like this...
      return [!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]];
    }
    

    פורסם במקור בפורום CODE613 ב04/08/2015 02:24 (+03:00)

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

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

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

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

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

        לגבי הפונקציה שלעיל, היא עושה לופ על הפרמטר _ שמועבר אליה משתמשת עם with שזה בדיוק כמו with בVB, מוסיפה ערכים לarray ומציג את הarray ב alerts בסוף מחזירה תמיד 42 (משרשרת 4 ו 2), פשוט true ב JS שווה 1 ומערך ריק שווה false.

        פורסם במקור בפורום CODE613 ב04/08/2015 11:42 (+03:00)

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

          יש למישהו פה מושג אם זה התפתח למשהו?
          https://gist.github.com/benjamingr/7119117

          פורסם במקור בפורום CODE613 ב04/08/2015 23:57 (+03:00)

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

            את הדוגמא הקודמת עדיין לא הבנתי
            אז אני מנסה דוגמא קלה יותר..

            var Func = function(a,b,c)
            {
            alert(Func.length); //output 3
            alert(arguments.length); //output 6
            return a + b + c;
            }
            

            מדוע

            alert(arguments.length); //output 6
            

            ???
            תודה מראש!

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

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

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

              במקרה זה ניחשתי שכוונתך להקשות על סתירה בין הפלט של Func.length (לא הכרתי בכלל את המאפיין הזה) לפלט של arguments.length.
              והתשובה היא שהFunc.length מחזיר פרמטרים "פורמליים", כלומר כמה פרמטרים הוכרזו בחתימת הפונקציה (במקרה שלך a, b, c שזה 3). ואילו arguments.length נותן לך כמה פרמטרים "אקטואליים" כלומר הזונו בפועל בקריאה לפונקציה (שזה בעת השימוש בה). בJS, מספר זה יכול להיות קטן או גדול ממספר הפרמטרים הפורמליים.

              פורסם במקור בפורום CODE613 ב12/08/2015 15:02 (+03:00)

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

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

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

                מעניין הדבר הזה.
                למדתי משהו שלא ידעתי על JS.
                true + true == 2
                פשוט כל אחד כזה. !+[] מחזיר true.

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

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

                  @mat

                  פשוט כל אחד כזה. !+[] מחזיר true.

                  כי?

                  פורסם במקור בפורום CODE613 ב16/08/2015 23:01 (+03:00)

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

                    @אהרן

                    @mat
                    פשוט כל אחד כזה. !+[] מחזיר true.

                    כי?

                    כי הסימן + (כשהוא לא בין שתי אופרנדים אלא יש רק אופרנד אחריו) משמש כממיר למספר (זהה לפונקציה Number). ההתנהגות של ההמרה היא שאם זה מחרוזת ריקה או אובייקט זה מחזיר אפס. ראה דוקומנטציה בMDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus

                    אז +[] שווה 0.
                    והסימן ! הופך תוצאה בוליאנית. כיון שאפס זה שלילי אז זה מחזיר חיובי.

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

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

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

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

                      @mat

                      מעניין הדבר הזה.
                      למדתי משהו שלא ידעתי על JS.
                      true + true == 2
                      פשוט כל אחד כזה. !+[] מחזיר true.

                      !!!!!!!!!!!!!!!!!!!!!!!!!!!!![] == false
                      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!![] == true
                      

                      קיים רק בשביל שנראה שהשפה הזו גאונית? :ugeek:

                      פורסם במקור בפורום CODE613 ב18/08/2015 04:38 (+03:00)

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

                        @דוד ל.ט.

                        @אהרן
                        @mat
                        פשוט כל אחד כזה. !+[] מחזיר true.

                        כי?

                        כי הסימן + (כשהוא לא בין שתי אופרנדים אלא יש רק אופרנד אחריו) משמש כממיר למספר (זהה לפונקציה Number). ההתנהגות של ההמרה היא שאם זה מחרוזת ריקה או אובייקט זה מחזיר אפס. ראה דוקומנטציה בMDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus

                        אז +[] שווה 0.
                        והסימן ! הופך תוצאה בוליאנית. כיון שאפס זה שלילי אז זה מחזיר חיובי.

                        תודה רבה רבה!
                        הבנתי הרבה מהקוד, קבלתי הרבה תובנות והבנתי דברים נוספים.

                        פורסם במקור בפורום CODE613 ב18/08/2015 04:40 (+03:00)

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

                          עדיין לא הבנתי כמה דברים

                          for(ll=!+[]+!![];ll<_+(+!![]);ll++) {
                                lll=+!![];
                          

                          היתה הצהרה רק על משתנה L מאיפה צמח LL ו-LLL??

                          forEach(alert);
                          

                          מאיפה הוא יודע על איזה מערך לבצע forEach??

                          פורסם במקור בפורום CODE613 ב18/08/2015 04:44 (+03:00)

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

                            פה הסידרה שהבחור יצר ובדק את הקוד הזה
                            למשל הבא בתור (קדמו את המספר בurl)
                            http://jsfiddle.net/b38L4p9q/3/
                            מראה את הקוד הנ"ל בתחביר רגיל

                            function primeAlert(n) {
                              'use strict';
                              var arr = [], m, p;
                              for (m = 2; m <= n; m++) {
                                p = 1;
                                while (m % ++p);
                                if (m === p) arr.push(m);
                              }
                              arr.forEach(alert);
                              return 42;
                            }
                            

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

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

                              @אהרן

                              עדיין לא הבנתי כמה דברים

                              for(ll=!+[]+!![];ll<_+(+!![]);ll++) {
                                    lll=+!![];
                              

                              היתה הצהרה רק על משתנה L מאיפה צמח LL ו-LLL??

                              forEach(alert);
                              

                              מאיפה הוא יודע על איזה מערך לבצע forEach??

                              א. עצם זה שאתה מקצה לזה ערך זה כמו הכרזה על משתנה
                              זה מאוד מסוכן ובשביל למנוע את זה יש את strict mode
                              ב. את זה עושה ה with

                              פורסם במקור בפורום CODE613 ב18/08/2015 10:21 (+03:00)

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

                                א. <use strict>? אתה מכניס א"ז בקביעות לסקריפטים שלך?
                                ב. מה??

                                פורסם במקור בפורום CODE613 ב18/08/2015 10:36 (+03:00)

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

                                  @אהרן

                                  א. <use strict>? אתה מכניס א"ז בקביעות לסקריפטים שלך?

                                  כן.
                                  @אהרן

                                  ב. מה??

                                  תחשוב על with כמו import שעושים ב C# למרחב שמות לדוגמה אם תרשום ב JS ככה:

                                  var r = 10;
                                  with (Math) {
                                    x = r * cos(PI);
                                  }
                                  

                                  זה זהה ל:

                                  var r = 10;
                                  var x = r * Math.cos(Math.PI);
                                  console.log(x);
                                  

                                  זה פשוט חוסך את ההקלדה של מרחב השמות / המשתנה שעליו בוצע ה with, וכך גם במקרה שלנו ב forEach, בגלל שהוא בתוך בלוק של with על המערך לא צריך לרשום את שם המערך.
                                  אגב זו תכונה מאוד בעייתית איך שמימשו אותה ב JS, ב VB לדוגמה אתה לא צריך להקליד את שם המשתנה אבל צריך להקליד נקודה במקום,
                                  במימוש הזה זה יכול לגרום לבלבול, לדוגמה כאן הוא ידפיס את x מתוך o, שזה לא קריא בכלל:

                                  function test(o,x) { with(o) {alert(x);}}
                                  var o = {x:'test1'};
                                  test(o,'test2');
                                  

                                  ואם אין x ב o אז הוא כן ידפיס את הפרמטר x:

                                  function test(o,x) { with(o) {alert(x);}}
                                  var o = {u:'test1'};
                                  test(o,'test2');
                                  

                                  לעיון נוסף
                                  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with

                                  פורסם במקור בפורום CODE613 ב18/08/2015 11:49 (+03:00)

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

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

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

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