想了一天没想明白,刚刚自学的java,请大神指定下,尽量讲的细一点,万分感谢

//这是JS工具类,用来获取url请求地址中?后面携带的参数数据的,用法是指定key返回对应的value值(问题在代码中的注释)

"getParameterMap":function(){

        var url = location.search;  
        var HMRequest = new Object(); 

        if (url.indexOf("?") != -1) {  
          var str = url.substr(1); 
          strs = str.split("&");  
          for(var i = 0; i < strs.length; i ++) {  
             var pname=strs[i].split("=")[0];
             var pvalue=unescape(strs[i].split("=")[1]);
             var pvalues=null; 
             //下边的语句是什么意识啊???????????
             if(HMRequest[pname]==null){ 
                //JS创建了新的数组对象并赋值pvalue,赋值给谁了这是,看不懂用呢?
                HMRequest[pname]=new Array(pvalue)
             }else{
                //push(pvalue);向数组的末尾添加一个元素,哪个数组啊?
                        //HMRequest[pname]是个数组?没看明白啊?
                HMRequest[pname].push(pvalue);
             }
          }  
       }  
       return HMRequest;
    },

HMRequest[pname]里面只有一个pname你别受他干扰,直接把HMRequest[pname]替换为test
你就明了了

if(test==null){//test为空的话才执行下一句,否则执行else的下一句
test = new Array(123);//把123转换为数组,给test
}else{//非空情况
test.push(456);//给数组再添加一个值
}

要注意这是在for循环里的,会执行很多次的,会发现if只会被调用一次,因为进去后,test就会被赋值了,再也不是null了,以后的循环只会进else里
push就是给test这个数组里不断添东西,假如经过三次for循环,test里会有三个值的,[123,456,456],你想想是不是,数组就是这么用的,在java基础教程的前部分就有关于for循环条件语句if else的详细用法
语言都是如此,有个基础的顺序逻辑在里面