2012-09-06 56 views
1

我試圖尋找周圍工作的一些代碼,在Firefox而不是其他瀏覽器上運行,目前該功能看起來像這樣:分配多個變量

function capitalise(myString) { 
    // Extract 1st char (b) and rest of string (c) then return it with b capitalised 
    var [a, b, c] = /^(.)(.*)$/.exec(myString); 
    return b.toUpperCase()+c; 
} 

其中在完美的作品Firefox但Chrome和Opera不會允許它。任何人都可以提出一個體面的工作?我使用相同的var [thing1,thing2,thing3] = regex.exec(str);我正在寫的腳本中的各種語法的語法。

回答

0

我想這會在其他瀏覽器:

function capitalise(myString) { 
    // Extract 1st char (b) and rest of string (c) 
    // then return it with b capitalised 
    var abc = /^(.)(.*)$/.exec(myString); 
    return abc[1].toUpperCase()+abc[2]; 
} 

或者:

function capitalise(myString) { 
    return myString.match(/^(.)(.+)$/) 
      .slice(1) 
      .reduce(function(a,b){return a.toUpperCase()+b;} 
     ); 
} 
+0

我看到的,而exec函數返回一個數組的比較嬌氣的JS引擎不會讓我即時聲明多個變量,同時爲它們分配一個數組值。 – Nick

+0

似乎喜歡它。另一方面,這是一種奇怪的語法。雖然它確實在FF中有效,但我沒有找到任何文檔。你是否意外地發現了它,或者如果沒有,你能指點我有關'var [a,b,c] = ...'的任何文檔嗎? – KooiInc

+0

好吧,離開它,發現http://stackoverflow.com/questions/6941837/var-a-b-c,它被稱爲*解構賦值*,並且確實僅在Mozilla的JavaScript中支持,從1.7版開始。 – KooiInc