为什么我可以映射布尔值和数字而不是RegEx?

时间:2016-10-14 10:40:26

标签: javascript constructor

为什么我们可以将NumberBooleanString传递给数组地图但不传递给RegExp?可能是一些菜鸟,但只是试图了解这些构造函数之间的基本区别?

let array = ["10", "20", "30", "40", "0"];

console.log("Boolean",array.map(Boolean));

console.log("Number",array.map(Number));

console.log("RegExp",array.map(x=>new RegExp(x)));
//cannot do array.map(RegExp)

1 个答案:

答案 0 :(得分:3)

致电时:

array.map(RegExp);

你得到:

  

Uncaught SyntaxError:提供给RegExp构造函数“0”的无效标志

传递给map的函数会被多个参数(currentValue, index, array)调用。

RegExp(与BooleanNumber不同)使用第二个参数(它描述了应该应用于正则表达式的标志,例如全局"g" )。一个数字(index是)不是有效的标志名称。