在Koa2源码中发现多次使用xx.split(/\s*,\s*/),为什么不使用

var a = ',,,111,,,';

console.time('测试 a 速度')

a.split(/\s*,\s*/)[0]

console.timeEnd('测试 a 速度')

console.time('测试 b 速度')

a.split(',')[0]

console.timeEnd('测试 b 速度')

上面代码可以测试出b的速度明显比a的快,

然而在Koa2源码中发现多次使用xx.split(/s,s/),为什么不使用xx.split(',')?

希望可以得到解答,万分感谢!

下面图片是Koa2 lib > request.js文件中的一部分截图:

https://img1.mukewang.com/5c6e10d50001f76a05240331.jpg

开心每一天1111
浏览 528回答 1
1回答

GCT1015

/\s*,\s*/这个正则匹配的是0到多个空白符,然后是逗号,然后是0到多个空白符;split(/\s*,\s*/)和split(',')的区别是要不要处理逗号前后的空白符;一般情况下,我们认为字符串前后的空白符都是没有什么作用的,所以会使用string.trim()方法来去掉前后的空白符。所以,假设需要处理的字符串是"Nancy , Lucy",我们想要的结果是["Nancy", "Lucy"]那么,使用split(/\s*,\s*/)的结果就是想要的结果:var str = "Nancy  ,  Lucy"str.split(/\s*,\s*/) // ["Nancy", "Lucy"]如果使用split(','),则我们需要对split之后的数组的每个元素多进行一次trim()操作:var str = "Nancy  ,  Lucy"var result = str.split(',') // ["Nancy  ", "  Lucy"]result = result.map(item => item.trim()) // 此时result为["Nancy", "Lucy"]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript