repalce回调函数中如何拿到arguments的值?

发布于 2022-09-07 20:46:55 字数 876 浏览 12 评论 0

javascript:repalce(regEx,Fn)回调函数Fn()中如何拿到arguments的值

题目来源及自己的思路

阮一峰《ES6入门》第五章正则表达式的扩展中的一个例子,运行时出错。

相关代码

let re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/u;
//replace方法的第二个参数也可以是函数,该函数的参数序列如下。
prn('2015-01-02'.replace(re, (matched, // 整个匹配结果 2015-01-02
    capture1, // 第一个组匹配 2015
    capture2, // 第二个组匹配 01
    capture3, // 第三个组匹配 02
    position, // 匹配开始的位置 0
    S, // 原字符串 2015-01-02
    groups // 具名组构成的一个对象 {year, month, day}
    ) => { 
        let {year, month, day} = arguments[arguments.length - 1]; //赋值不成功!?
        //let {year, month, day}  = groups; //这个是OK的。
        return `${day}/${month}/${year}`;
    }));

你期待的结果是什么?实际看到的错误信息又是什么?

arguments[arguments.length - 1]调试观察,有值且是正确的,但是不能赋值出去,太奇怪了?
请达人指点,谢谢!
(用groups直接赋值是可以的,不用说了。)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花落人断肠 2022-09-14 20:46:55

箭头函数没有自己的arguments,就和没有自己的this一样,你这里嵌套了一层函数,arguments实际是外层函数的arguments,所以你没有发现,如果你使用str.replce(re,function(){})就没问题了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文