为什么我们可以将Number
,Boolean
或String
传递给数组地图但不传递给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)
答案 0 :(得分:3)
致电时:
array.map(RegExp);
你得到:
Uncaught SyntaxError:提供给RegExp构造函数“0”的无效标志
传递给map
的函数会被多个参数(currentValue, index, array
)调用。
RegExp
(与Boolean
和Number
不同)使用第二个参数(它描述了应该应用于正则表达式的标志,例如全局"g"
)。一个数字(index
是)不是有效的标志名称。