Hi ColinFine,

> It doesn't seem to me that these imply that there will be a different
> scope, but I'm not sure.
I translate badlly my though (and I'm probably wrong). The created
function in both case have the same scope (I think too).

According to what you quote, I made the following test:
var _f=function(){return true};

var F;
if(_f()===true) F=function(){alert('F true');}
else F=function(){alert('F false');};
F();

var _ff=true;

if((function(){return false})()===true) { function FF(){alert('FF
true');} }
else { function FF(){alert('FF false');}; }
FF();

and in both case it work as expected : first 'true' and second
'false'.
Means you could use function in the if test, inside the if statement
and both way of writting the function have the same result.

> - "function statmenes are subject to 'hoisting'. This means that
> regardless of where a function is placed, it is moved to the top of
> the scope in which it is defined. ... It also prohibits the use of
> function statements in if statements. ... "
This part doesn't seems to me a bad things, it permit to define a
function after it's usage (in the created code, not during execution
of code of course).

I've perhaps miss something ???

--
david

On 26 mai, 14:06, ColinFine <colin.f...@pace.com> wrote:
> On May 26, 12:41 pm, david <david.brill...@gmail.com> wrote:
>
>
>
> > @ColinFine,
>
> > > According to Flanagan's book (section 8.1.2) the optional function-
> > > name in a function literal is not assigned to a variable, but
> > > apparently lives in a special namespace of its own that allows the
> > > function to refer to itself. So unless the function is recursive, the
> > > above is identical to
>
> > > var myFunction = function() {alert('hi');}
>
> > > and more or less identical to
>
> > > function myFunction() {alert('hi')}
>
> > I try to refer to myFunction recursivelly and in both case it works
> > (test done on FF3.0).
> > could you send me an exemple of what you say ?
>
> No I can't. I'm just quoting from the books.
>
> > I'd only though the difference was in the scope of the created
> > function depending on the way it is declare as a *statement* or as a
> > *litteral*.
>
> I didn't go into the reasons why Crockford advises not using function
> statements. They are:
> - "the second form makes it clear that [myFunction] is a variable
> containing a function value. To use the language well, it is important
> to understand that functions are values"
> - "function statmenes are subject to 'hoisting'. This means that
> regardless of where a function is placed, it is moved to the top of
> the scope in which it is defined. ... It also prohibits the use of
> function statements in if statements. ... "
>
> It doesn't seem to me that these imply that there will be a different
> scope, but I'm not sure.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to