为什么replace方法回调函数中JSON不能用点语法调用?

下面代码弹窗是{}部分是undefined

var str = "今天{tianqi}很好,我的{xinqing}很糟,因为明天是{qingren}节!";     var dictionary = {        "tianqi":"天气",       
 "xingqing":"心情",        "qingren":"情人"
     }
     str = str.replace(/{(\w+)}/g,function(match,$1){        console.log($1);        return dictionary.$1;
     });
     alert(str);

但用中括号是可以的:

     var str = "今天{tianqi}很好,我的{xinqing}很糟,因为明天是{qingren}节!";     var dictionary = {        "tianqi":"天气",        
     "xingqing":"心情",        "qingren":"情人"
     }
     str = str.replace(/{(\w+)}/g,function(match,$1){        console.log($1);        return dictionary[$1];
     });
     alert(str);

为什么?


墨色风雨
浏览 545回答 1
1回答

慕尼黑5688855

> var a = {A: "test", B: "what"}undefined> var A = 'B'undefined> a.A'test'> a[A]'what'a.A => a['A'] (这里A是字符串)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript