在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ repalce回調函數(shù)中如何拿到arguments的值?

repalce回調函數(shù)中如何拿到arguments的值?

javascript:repalce(regEx,Fn)回調函數(shù)Fn()中如何拿到arguments的值

題目來源及自己的思路

阮一峰《ES6入門》第五章正則表達式的擴展中的一個例子,運行時出錯。

相關代碼

let re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/u;
//replace方法的第二個參數(shù)也可以是函數(shù),該函數(shù)的參數(shù)序列如下。
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直接賦值是可以的,不用說了。)

回答
編輯回答
耍太極

箭頭函數(shù)沒有自己的arguments,就和沒有自己的this一樣,你這里嵌套了一層函數(shù),arguments實際是外層函數(shù)的arguments,所以你沒有發(fā)現(xiàn),如果你使用str.replce(re,function(){})就沒問題了

2018年6月7日 00:53