2012-09-06 57 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