Basic Question

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • levinsontodd@gmail.com

    Basic Question

    Why does this code say "hi" before "hey"?

    Discusss.

    window.onload = function() {
    alert("hey");
    test.hi;
    }

    test = {}
    test.hi = alert("hi");
  • Stevo

    #2
    Re: Basic Question

    levinsontodd@gm ail.com wrote:
    Why does this code say "hi" before "hey"?
    Discusss.
    >
    window.onload = function() {
    alert("hey");
    test.hi;
    }
    >
    test = {}
    test.hi = alert("hi");
    Because you coded it to say "hi" before "hey". Look at the code above.
    Discuss :)

    The onload event will happen when the browser has (basically) parsed to
    the end of the page and executed all the inline code it finds on the
    way. The sequence ni your case goes like this -

    define a handler for onload
    create a test object
    create a .hi inside test and assign the value undefined, which is what
    alert *returns* when you ask it to display "hi"

    Comment

    • Gregor Kofler

      #3
      Re: Basic Question

      levinsontodd@gm ail.com meinte:
      test = {}
      test.hi = alert("hi");
      hi gets the "result" of (window.)alert assigned. And before returning
      this result the alert is being popped up. What you were supposedly
      looking for is

      test.hi = function() { alert("hi"); };

      However in your onload listener this.hi won't do the trick (just like
      now). It must be test.hi()

      Gregor


      --
      http://photo.gregorkofler.at ::: Landschafts- und Reisefotografie
      http://web.gregorkofler.com ::: meine JS-Spielwiese
      http://www.image2d.com ::: Bildagentur für den alpinen Raum

      Comment

      • levinsontodd@gmail.com

        #4
        Re: Basic Question

        On May 24, 1:08 am, Gregor Kofler <use...@gregork ofler.atwrote:
        levinsont...@gm ail.com meinte:
        >
        test = {}
        test.hi = alert("hi");
        >
        hi gets the "result" of (window.)alert assigned. And before returning
        this result the alert is being popped up. What you were supposedly
        looking for is
        >
        test.hi = function() { alert("hi"); };
        >
        However in your onload listener this.hi won't do the trick (just like
        now). It must be test.hi()
        >
        Gregor
        >
        --http://photo.gregorkof ler.at::: Landschafts- und Reisefotografie http://web.gregorkofle r.com ::: meine JS-Spielwiesehttp://www.image2d.com ::: Bildagentur für den alpinen Raum
        Hi Gregor,

        Thanks for your answer.

        So, instead of assigning a function to test.hi that popped up an
        alert, I was actually assigning window.alert to test.hi?

        I guess I still don't understand why the interpreter executed test.hi
        first.

        Comment

        • david.karr

          #5
          Re: Basic Question

          On May 24, 7:58 pm, "levinsont...@g mail.com" <levinsont...@g mail.com>
          wrote:
          On May 24, 1:08 am, Gregor Kofler <use...@gregork ofler.atwrote:
          >
          >
          >
          levinsont...@gm ail.com meinte:
          >
          test = {}
          test.hi = alert("hi");
          >
          hi gets the "result" of (window.)alert assigned. And before returning
          this result the alert is being popped up. What you were supposedly
          looking for is
          >
          test.hi = function() { alert("hi"); };
          >
          However in your onload listener this.hi won't do the trick (just like
          now). It must be test.hi()
          >
          Gregor
          >
          --http://photo.gregorkof ler.at:::Landsc hafts- und Reisefotografie http://web.gregorkofle r.com::: meine JS-Spielwiesehttp://www.image2d.com ::: Bildagentur für den alpinen Raum
          >
          Hi Gregor,
          >
          Thanks for your answer.
          >
          So, instead of assigning a function to test.hi that popped up an
          alert, I was actually assigning window.alert to test.hi?
          >
          I guess I still don't understand why the interpreter executed test.hi
          first.
          You didn't assign "window.ale rt" to "test.hi", you assigned
          'window.alert(" hi")'. There's a big difference. You can assign
          functions to variables, but that's not what you did. You assigned the
          RESULT of calling 'window.alert(" hi")' to "test.hi". Obviously, at
          the time of the assignment, it actually called 'window.alert(" hi")',
          displaying the alert box, and then assigning the (meaningless) result
          of calling that function to the variable "test.hi".

          You saw the "hi" alert before the other alert because the other alert
          only would have executed on completion of window load.

          Comment

          • Evertjan.

            #6
            Re: Basic Question

            david.karr wrote on 25 mei 2008 in comp.lang.javas cript:
            alert("hi");
            Using

            alert("hi 1");

            and

            alert("hi 2");

            for the two shouldl enlighten you, OP.

            --
            Evertjan.
            The Netherlands.
            (Please change the x'es to dots in my emailaddress)

            Comment

            • levinsontodd@gmail.com

              #7
              Re: Basic Question

              On May 24, 9:42 pm, "david.karr " <davidmichaelk. ..@gmail.comwro te:
              On May 24, 7:58 pm, "levinsont...@g mail.com" <levinsont...@g mail.com>
              wrote:
              >
              >
              >
              On May 24, 1:08 am, Gregor Kofler <use...@gregork ofler.atwrote:
              >
              levinsont...@gm ail.com meinte:
              >
              test = {}
              test.hi = alert("hi");
              >
              hi gets the "result" of (window.)alert assigned. And before returning
              this result the alert is being popped up. What you were supposedly
              looking for is
              >
              test.hi = function() { alert("hi"); };
              >
              However in your onload listener this.hi won't do the trick (just like
              now). It must be test.hi()
              >
              Gregor
              >
              --http://photo.gregorkof ler.at:::Landsc hafts-und Reisefotografie http://web.gregorkofle r.com:::meine JS-Spielwiesehttp://www.image2d.com ::: Bildagentur für den alpinen Raum
              >
              Hi Gregor,
              >
              Thanks for your answer.
              >
              So, instead of assigning a function to test.hi that popped up an
              alert, I was actually assigning window.alert to test.hi?
              >
              I guess I still don't understand why the interpreter executed test.hi
              first.
              >
              You didn't assign "window.ale rt" to "test.hi", you assigned
              'window.alert(" hi")'. There's a big difference. You can assign
              functions to variables, but that's not what you did. You assigned the
              RESULT of calling 'window.alert(" hi")' to "test.hi". Obviously, at
              the time of the assignment, it actually called 'window.alert(" hi")',
              displaying the alert box, and then assigning the (meaningless) result
              of calling that function to the variable "test.hi".
              >
              You saw the "hi" alert before the other alert because the other alert
              only would have executed on completion of window load.
              Thanks David, that clears it up for me.

              Comment

              Working...