JavaScript - Nested or Inline Function JavaScript

Asked By Erik Little on 17-Jan-07 12:10 PM
Earn up to 50 extra points for answering this tough question.

Below is a function that i am studying from this example on a site..

Where the inline function ( Question: Is this an inline fuction ) is below. Can this function be removed from the ParseQueryString() function and referenced??

--The way it is now..

 this.params = function(name)
    {
        if (arguments.length) {
            if (defined(parameters[name]))
                return parameters[name].clone();
            else
                return null;
        }
        else
            return parameterNames.clone();
    }

---The way i am wondering if it could be-----

 this.params = function(SOME STRING VALUE)
{
    }


function(name){
        if (arguments.length) {
            if (defined(parameters[name]))
                return parameters[name].clone();
            else
                return null;
        }
        else
            return parameterNames.clone();

-----------------------------------------------


---Complete code frame





function ParseQueryString()
{
    var parameters = {};
    var parameterNames = [];

    /* defined for convience and readability */
    function defined(expr)
    {
        return expr != undefined;
    }

    function init()
    {
        var i;
        var pair, pairs;
        var name, value;

        if (location.search.length < 2)
            return;

        pairs = location.search.substr(1).split(/[&;]/);

        for (i = 0; i < pairs.length; i++)
        {
            pair = pairs[i].split(/=/);

            name = pair[0].decodeURL();
            if (defined(pair[1]))
                value = pair[1].decodeURL();
            else
                value = undefined;

            if (!defined(parameters[name])) {
                parameterNames.push(name);
                if (defined(value))
                    parameters[name] = [value];
                else
                    parameters[name] = [];
            }
            else if (defined(value))
                parameters[name].push(value);
        }
    }
    init();
   
    var scalarParamIndex = 0;
   
    this.param = function(name)
    {
        if (arguments.length) {
            if (defined(parameters[name]))
                return parameters[name][0];
            else
                return undefined;
        }
        else {
            if (scalarParamIndex < parameterNames.length)
                return parameterNames[scalarParamIndex++];
            else {
                scalarParamIndex = 0;
                return undefined;
            }
        }
    }
   
    this.params = function(name)
    {
        if (arguments.length) {
            if (defined(parameters[name]))
                return parameters[name].clone();
            else
                return null;
        }
        else
            return parameterNames.clone();
    }
}



Erik