469,287 Members | 2,590 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,287 developers. It's quick & easy.

Basic Question

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

Discusss.

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

test = {}
test.hi = alert("hi");
Jun 27 '08 #1
6 923
le**********@gmail.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"
Jun 27 '08 #2
le**********@gmail.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
Jun 27 '08 #3
On May 24, 1:08 am, Gregor Kofler <use...@gregorkofler.atwrote:
levinsont...@gmail.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 Reisefotografiehttp://web.gregorkofler.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.
Jun 27 '08 #4
On May 24, 7:58 pm, "levinsont...@gmail.com" <levinsont...@gmail.com>
wrote:
On May 24, 1:08 am, Gregor Kofler <use...@gregorkofler.atwrote:
levinsont...@gmail.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 Reisefotografiehttp://web.gregorkofler.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.alert" 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.
Jun 27 '08 #5
david.karr wrote on 25 mei 2008 in comp.lang.javascript:
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)
Jun 27 '08 #6
On May 24, 9:42 pm, "david.karr" <davidmichaelk...@gmail.comwrote:
On May 24, 7:58 pm, "levinsont...@gmail.com" <levinsont...@gmail.com>
wrote:
On May 24, 1:08 am, Gregor Kofler <use...@gregorkofler.atwrote:
levinsont...@gmail.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 Reisefotografiehttp://web.gregorkofler.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.alert" 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.
Jun 27 '08 #7

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

6 posts views Thread by pauldepstein | last post: by
9 posts views Thread by Malcolm | last post: by
4 posts views Thread by Ramesh | last post: by
5 posts views Thread by Aussie Rules | last post: by
4 posts views Thread by MikeB | last post: by
3 posts views Thread by Scott Stark | last post: by
reply views Thread by zhoujie | last post: by
reply views Thread by suresh191 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.