The function declaration syntax cannot be used within a block statement.
Legal:
function a() {
    function b() {
    }
}
Illegal:
function a() {
    if (c) {
        function b() {
        }
    }
}
You can do this though:
function a() {
    var b;
    if (c) {
        b = function() {
        };
    }
}
For the language nerds among us you'll want to reference sections 12.1, 13.1, and 14 of the specification. You will find the following syntax descriptions.
12.1  Block
Syntax 
Block : 
    { StatementListopt }
StatementList : 
    Statement 
    StatementList Statement 
13  Function Definition 
Syntax 
FunctionDeclaration : 
 
    function Identifier ( FormalParameterListopt ) { FunctionBody } 
FunctionExpression : 
 
    function Identifieropt ( FormalParameterListopt ) { FunctionBody } 
FormalParameterList : 
 
    Identifier 
 
    FormalParameterList , Identifier
FunctionBody : 
 
    SourceElements  
14  Program 
Syntax 
Program : 
 
    SourceElementsopt 
SourceElements : 
 
    SourceElement 
 
    SourceElements SourceElement 
SourceElement : 
 
    Statement 
 
    FunctionDeclaration