In fact, within a single <script> tag, function definitions happen first,
before any code in that <script> tag is executed. It would be perfectly
valid to write:
<script type="text/javascript">
// will be run immediately, but *after* callit is defined
callit();
// will be defined immediately, and *before* the code above is excuted
function callit() {
alert("Hello world!");
}
</script>
I'm not saying that this code would be the same as the $(document).ready()
version - it doesn't wait for DOM ready - just pointing out that function
definitions are processed before code is executed.
It works the same way inside a function:
<script type="text/javascript">
outer();
function outer() {
inner();
function inner() {
alert("Hello world!");
}
}
</script>
That code will alert "Hello world!" even though the call to each function
precedes its definition.
-Mike
On Wed, Dec 16, 2009 at 6:17 AM, Richard D. Worth <[email protected]> wrote:
>
> No need to add another block. As you pointed out earlier, the document
> ready won't run until later. By the time it does, the callit function will
> have been defined:
>
>
> <script type="text/javascript">
> $(document).ready(function() {
> // will be run when doc is loaded
> callit();
> });
>
> // will be defined immediately
> function callit() {
> alert("Hello world!");
> }
> </script>
>
> - Richard
>
>