2014-11-15 33 views
0

我很困惑,在一個findAndReplace功能找到下面的代碼片段:混亂的JavaScript三元運算符的文本分析功能

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行末尾沒有分號?

+1

它只是逗號; var a = x,b = y,c = z;所以'var regex =表達式,childnodes =表達....' – mplungjan

回答

2

第3行到第5行不是條件三元運算符的一部分。逗號用於聲明單獨的變量,彼此不相關。以下是有效的語法:

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

在這種情況下,'string' ? new RegExp(searchText, 'g') : searchText被分配給第一個變量,regex。其他變量同樣被賦予它們自己的表達式。