【问题标题】:Assigning multiple variables from javascript regex.exec从 javascript regex.exec 分配多个变量
【发布时间】:2012-08-31 05:01:12
【问题描述】:

我正在尝试为一些适用于 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);我目前正在编写的脚本中各种内容的语法。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    我想这在其他浏览器中也可以使用:

    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;}
             );
    }
    

    【讨论】:

    • 我明白了,虽然 exec 函数返回一个数组,但更挑剔的 js 引擎不允许我在同时为它们分配数组值的同时动态声明多个变量。
    • 好像是这样。另一方面,它有点奇怪的语法。虽然它确实适用于 FF,但我没有找到任何关于它的文档。您是否偶然发现了它,或者,如果没有,您能否指出我在 var [a,b,c] = ... 上的任何文档?
    • 好吧,别说了,找到stackoverflow.com/questions/6941837/var-a-b-c,叫做Destructuring assignment,确实只支持Mozilla的JavaScript,从1.7版本开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多