问答详情
源自:6-3 使用JS实现函数

关于构建函数添加,移除,是否有 等返回值的问题 及 变量申明不用_下划线的区别问题,求大神详解

问1:hasclass为社么是return?不能用className =obj.className.match(new RegExp("(\\s|^)" + name + "(\\s|^)"));  吗?而其他2个都那么用的,见截图

问2: var item = items[i];var itemtop = item.offsetTop();     我这里变量名没用下划线_item  和 item 有区别吗?好像听说用下划线是实例啥来着               

function hasclass(obj,name){
            return obj.className.match(new RegExp("(\\s|^)" + name + "(\\s|^)"));
        }
        
        function removeclass(obj,name){
            if(hasclass(obj,name)){
                var reg = new RegExp("(\\s|^)" +name + "(\\s|^)");
                obj.className =  obj.className.replace(reg, "");
            }
        }
        
        function addclass(obj,name){
            if(!hasclass(obj,name)){
                obj.className += " " + name;
            }
        }
       

提问者:慕仙5237505 2017-11-17 11:39

个回答

  • ricoxiao
    2017-11-26 21:28:13

    1. 这里的hasClass是用来判断元素是否有某个class的,只需要读取需要的值即可。而后面两个方法是用来操作(增加、删除)class的,是需要操作DOM,需要改变值的,所以会有赋值操作。

    2. 变量的命名没有特别的讲究,可以有自己的风格。通常变量名前面加下划线,表示这个变量是这个方法中的私有变量。