Zac*_*ier 2 javascript regex parameters
我正在尝试以一定量操纵字符串内的一些浮点值。为此,我需要执行以下操作:
var string = '<path d="M219.6,-71.4C249,19.1,212.7,130.9,135.7,186.8C58.8,242.7,-58.8,242.7,-135.7,186.8C-212.7,130.9,-249,19.1,-219.6,-71.4C-190.2,-161.8,-95.1,-230.9,0,-230.9C95.1,-230.9,190.2,-161.8,219.6,-71.4Z" />';
var regex = /[+-]?([0-9]*[.])?[0-9]+/g;
console.log(string.replace(regex, parseFloat("$&") + 300));Run Code Online (Sandbox Code Playgroud)
怎么就被替换parseFloat("$&")用NaN?正确的方法是什么?
您的代码相当于编写
var temp = parseFloat("$&") + 300;
document.body.innerText = string.replace(regex, temp);
Run Code Online (Sandbox Code Playgroud)
因为函数参数是在调用函数之前求值的。"$&"仅在具有字面意义的情况下才具有特殊含义replace(),它对而言没有任何特殊含义parseFloat(),并且无法replace()到达parseFloat()调用并修改参数。
如果要调用函数来确定替换,则需要将函数引用传递给该replace()函数,而不是传递包含该函数调用的表达式。
var temp = parseFloat("$&") + 300;
document.body.innerText = string.replace(regex, temp);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |