1. 程式人生 > >js中string和正則結合使用的問題

js中string和正則結合使用的問題

name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
  return word.substring(0,1).toUpperCase()+word.substring(1);}
  );

上面的程式碼是摘自W3school,substring和replace的方法不難理解,我主要是測試了一下replace裡傳入的function;下面是一步步對上面的程式碼進行拆解的過程:

name.match(/\b\w+\b/g)  =>["aaa","bbb","ccc"]     (1)

上面的結果是我們需要替換掉內容,但是替換的只是首字母,所以取首字母的過程就落在了function上。
function裡的擷取字串,拼接字串是沒有問題的,主要是傳的引數word,
word應該是以個字串,再取字串的首字母變換,這時候我們發現數組中的每一項正好是字串,
所以word應該是arr[i],陣列的每一項的值。之所以這麼理解,是因為只有這樣才能解釋的通。我沒有注意到哪裡定義了function的形參的傳入規則,所以暫且這樣理解。
//*****************************************
上面的程式碼是初次的理解,
下面的表述我覺得可能是真正的理由:
var reg = /\b\w+\b/g;是全域性匹配,每匹配一次就會執行一次function(),這麼理解就行得通了。