下面代码弹窗是{}部分是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);
为什么?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
a.A => a['A'] (这里A是字符串)
如果你用点“.”访问,访问的属性是
dictionary.$1,即$1为字符串,而当以[]访问时,是将$1内存的值作为变量的属性~[]表示法在存取属性值时会进行表达式运行。而
.表示法是直接存取属性值。$1是变量,dictionary.$1中,$1是字符串
理解
dictionary.$1 = dictionary['$1']就可以了,这里左边的$1是.属性访问符的“操作数”,而不是一个变量。