文本解析函数中与 Javascript 三元运算符的混淆

Confusion with Javascript Ternary Operator in Text Parsing Function

本文关键字:三元 运算符 函数 Javascript 文本      更新时间:2023-09-26

我对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是一个字符串,则创建正则表达式对象。但似乎变量childNodescnLengthexcludes的设置与searchText是什么类型无关。

我想我可能只是对语法感到非常困惑 - 但是第 3 行到 5 行是条件语句的一部分还是单独的?如果它们是分开的,为什么第 2 行末尾没有分号?

3 行到第 5 行不是条件三元运算符的一部分。逗号用于声明彼此不相关的单独变量。以下是有效的语法:

var a = 1, b = 2, c = "apples";

在这种情况下,'string' ? new RegExp(searchText, 'g') : searchText分配给第一个变量 regex 。其他变量同样被分配了自己的表达式。