请问这段简单的query怎么理解?

 function $(selector) {
    var allchilds = [];
    var childs = function (element) {
        return element.getElementsByTagName('*');
    }

    var ele = document.getElementsByTagName('html')[0]; 
    var sele = selector.replace(/\s+/, ' ').split(' '); //为什么要空格去替换空格呢?


    for (var i = 0, len = sele.length; i < len; i++) {
        ele = childs(ele);
        var eleLen = ele.length;
        var isGet = false;//这行代码的意义?

        switch (sele[i][0]) {
            case '#':
                for (var j = 0; j < eleLen; j++) {
                    if (ele[j].id === sele[i].substring(1)) { 
                        ele = ele[j];
                        isGet = true;
                        break;
                    }
                }
                break;
            case '.':
                for (var j = 0; j < eleLen; j++) {
                    var name = uniqArray(ele[j].className.split(' '));
                    if (name.indexOf(sele[i].substring(1)) !== -1) { //括号中内容的意思??
                        ele = ele[j];
                        isGet = true;
                        break;
                    }
                }
                break;
            case '[':
                var valueLoc = sele[i].indexOf('=');
                if (valueLoc !== -1) {
                    var key = sele[i].substring(1, valueLoc);
                    var value = sele[i].substring(valueLoc + 1, sele[i].length - 1);
                    for (var j = 0; j < eleLen; j++) {
                        if (ele[j][key] === value) {
                            ele = ele[j];
                            isGet = true;
                            break;
                        }
                    }
                }
                else {
                    var key = sele[i].substring(1, sele[i].length - 1);
                    for (var j = 0; j < eleLen; j++) {
                        if (ele[j][key]) {
                            ele = ele[j];
                            isGet = true;
                            break;
                        }
                    }
                }
                break;
            default :
                for (var j = 0; j < eleLen; j++) {
                    if (ele[j].tagName === sele[i].toUpperCase()) {
                        ele = ele[j];
                        isGet = true;
                        break;
                    }
                }
                break;
        }
    }

    if (!isGet) {
        ele = null;
    }

    return ele;
}

万分感谢

有大神帮帮忙吗???????????

var sele = selector.replace(/\s+/, ' ').split(' '); //为什么要空格去替换空格呢?
把多个连续空格替换为单个空格,再切分。这样切分出来的不会有空项。
if (name.indexOf(sele[i].substring(1)) !== -1)
name中包含sele[i]去掉第一个字符后的内容。为什么!==,这个应该是判断类型,再判断不等。

var sele = selector.replace(/\s+/, ' ').split(' '); //为什么要空格去替换空格呢?
这个是这则,\s代表空字符不一定是空格,\r \n,\t这种都算,或者传递多个空格统一替换为1个空格,防止split分割后得到多个空项

isGet代表传入的选择器是否正确,有匹配的项目,没有就返回null

if (!isGet) {
    ele = null;
}


这个是样式选择器,传入类型.xxxx的值,不懂你的uniqArray怎么写的,应该是将元素的样式变为字符串之类的,然后用元素的样式查询传入的选择器(要去掉第一个点内容,元素样式没有电)的是否在其中(.indexOf()!=-1)
                case '.':
                for (var j = 0; j < eleLen; j++) {
                    var name = uniqArray(ele[j].className.split(' '));
                    if (name.indexOf(sele[i].substring(1)) !== -1) { //括号中内容的意思??
                        ele = ele[j];
                        isGet = true;
                        break;
                    }
                }
                break;