我对findAndReplace
函数中的以下代码段感到困惑:
var regex = typeof searchText === 'string' ?
new RegExp(searchText, 'g') : searchText,
childNodes = (searchNode || document.body).childNodes,
cnLength = childNodes.length,
excludes = 'html,head,style,title,link,meta,script,object,iframe';
我认为三元运算符暗示如果searchText
是一个字符串,那么就创建了regexp对象。但是,无论childNodes
的类型是什么,似乎都设置了变量cnLength
,excludes
和searchText
。
我想我可能只是对语法很困惑 - 但是条件语句的第3到第5行还是分开?如果它们是分开的,为什么第2行末尾没有分号?
答案 0 :(得分:2)
第3行到第5行不是条件三元运算符的一部分。逗号用于声明单独的变量,彼此不相关。以下是有效的语法:
var a = 1, b = 2, c = "apples";
在这种情况下,'string' ? new RegExp(searchText, 'g') : searchText
被分配给第一个变量regex
。其他变量同样分配了自己的表达式。