JavaScript中split('/')分割单斜杠为何返回长度为2的数组?
为什么
"/".split('/')得到的数组长度是2? 这是个很常见的字符串分割行为问题,我来给你拆解清楚:
首先确认你的场景:当访问http://localhost时,window.location.pathname的返回值确实是"/"——这是浏览器对根路径的标准返回结果。
接下来重点看JavaScript中String.split()方法的工作逻辑:
当分隔符位于字符串的开头或结尾时,split会保留这些位置产生的空字符串元素:
- 对于字符串
"/",第一个字符就是分隔符'/',分隔符之前没有任何字符,所以这部分会被解析为空字符串,成为数组的第一个元素。 - 分隔符
'/'之后到字符串结束的部分同样没有字符,这部分也会被解析为空字符串,成为数组的第二个元素。
所以最终你得到的数组是["", ""],长度自然为2,这就是你的if (arr.length === 0)条件不成立、test没有被打印的原因。
如果想要得到不含空元素的路径分段,你可以在分割后过滤掉空字符串,比如:
var arr = path.split('/').filter(item => item !== ''); // 此时对于path为"/"的情况,arr会是一个空数组,长度为0
内容的提问来源于stack exchange,提问作者nllsdfx
相关产品推荐
相关产品推荐

