javascript 正则表达式切换菜单

javascript regexp toggle menu

谁能解释一下这是什么意思: /展开/.test(classes)

我知道正则表达式的开头和结尾是“/”,展开的是 class 的名称。但是 .test(classes) 没有意义。

在这个函数中: var originalNavClasses;

function toggleNav() {
    var elem = document.getElementById('navigation_list');
    var classes = elem.className;
    if (originalNavClasses === undefined) {
        originalNavClasses = classes;
    }
    elem.className = /expanded/.test(classes) ? originalNavClasses : originalNavClasses + ' expanded';
}

来自: http://blog.g-design.net/post/42617934013/create-an-accessible-toggle-menu-for-mobile#notes

关于

/expanded/.test(classes)

这里,/expanded/ 是一个用文字符号声明的正则表达式对象。 /.../ 被称为正则表达式定界符,在第二个 / 之后您可以使用正则表达式修饰符(例如 i - 忽略大小写,g - 全局,m - 多行). classes 是一个变量。 test() 如果 classes 包含 "expanded" 子字符串,则 returns 为真,否则 returns 为假。

有关详细信息,请参阅 RegExp reference at MDN

在这个具体的例子中,函数检查classes是否包含"expanded",如果是,则使用originalNavClasses,如果不是,则使用originalNavClasses + "expanded".