2012-07-12 30 views
1

昨天我回答计算器上的问题,有件事情我不我自己的答案明白...正则表达式:是字符串还是数字返回的数字匹配?

参考文献:the thread in question,并my fiddle

这里是我的答案代码:

现在 ​​

,什么让我惊讶的是,下面的代码工作过:

var rx = /{([0-9]+)}/g; 
str=str.replace(rx,function($0,$1){return params[$1];}); 

我的问题:parseInt怎么不需要? JavaScript在什么时候将$ 1转换为数字?它是在正则表达式还是在数组中?

+3

您是否尝试过使用['typeof']( https://developer.mozilla.org/en/JavaScript/Reference/Operators/typeof)? – Wex 2012-07-12 16:53:43

+0

doh ...不,我应该从那里开始。我只是试过,它说的是弦。所以看起来阵列1和'1'是一样的。 – Christophe 2012-07-12 16:58:08

+0

我认为'Array'是'Object',但是对只包含非负数的键进行了特殊处理。 – nhahtdh 2012-07-12 16:59:24

回答

0

这是因为JavaScript的读取索引作为一个字符串

array[1],将被读取

用同样的方法之前被转换成array['1']object['first']将工作

+0

所以使用parseInt听起来很愚蠢。我已在其他帖子上更新了我的答案。谢谢...每天学习。 – Christophe 2012-07-12 17:08:17

相关问题