【问题标题】:ES6 Big arrow notation function giving SyntaxError: missing ; before statementES6 大箭头符号函数给出 SyntaxError: missing ;声明之前
【发布时间】:2015-02-04 09:18:21
【问题描述】:

我正在尝试用 ES6 的方式制作新功能。

我正在尝试打高尔夫球。

这是我目前所拥有的:

F=>(s){/[^aeiou]{3}|[jqxz]/.test(s)};

但是这会返回一个神秘的错误:

SyntaxError: missing ; before statement

如果我尝试不使用大括号:

F=>(s)/[^aeiou]{3}|[jqxz]/.test(s);

我收到以下错误:

SyntaxError: expected expression, got '^'

正则表达式本身就可以正常工作。

你可以自己试试。

谁能告诉我我做错了什么?


我已经在最新的 Firefox 版本(目前是 35.0.1 版)上对此进行了测试。

我直接在控制台中使用它:这个没有 Firebug!

【问题讨论】:

    标签: javascript syntax-error ecmascript-6


    【解决方案1】:

    我想你想要

    var F = s => /[^aeiou]{3}|[jqxz]/.test(s);
    

    这会创建一个arrow function,它接收参数s 并返回/[^aeiou]{3}|[jqxz]/.test(s)

    并且该函数被分配给变量F


    请注意,您也可以使用在 ES5 中工作的不太长的替代方案,并且性能应该更好,因为它不会在每次调用时重新创建正则表达式对象。

    var F = /(?:)/.test.bind(/[^aeiou]{3}|[jqxz]/);
    

    【讨论】:

    • 天哪!那太快了! o.O 而且还没有反对票,这对我也有好处。对不起我的愚蠢。非常感谢您的帮助!
    • 关于较短的...我需要编写一个返回truefalse 的函数。由于 ES6 缩短了您创建函数的方式很多,因此我使用了它。我们的想法是将其削减到最低限度。
    猜你喜欢
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2013-06-11
    • 2019-01-06
    • 1970-01-01
    • 2017-05-22
    • 2016-12-08
    • 2017-11-28
    相关资源
    最近更新 更多