空字符串传入location.replace()的行为探究
空字符串传入location.replace()的行为探究
嘿,我来给你拆解下当你把空字符串传给location.replace('')时会发生啥~
当你执行这段代码时:
location.replace('');
浏览器会把当前页面的历史记录条目替换为当前站点的根路径。举个例子,要是你现在在https://your-site.com/articles/123这个页面,执行后会直接跳转到https://your-site.com/,而且这个跳转不会在浏览器历史里新增条目——也就是说,你点返回按钮会回到上上个页面,而不是刚才的文章详情页。
为啥会有这种行为呢?因为空字符串在URL解析规则里会被识别为当前URL的基准路径,location.replace()方法就会用这个解析后的根路径去替换当前的历史记录项,完成跳转。
要是你是不小心传入了空字符串导致了意外跳转,建议在调用前先做个简单的非空校验,比如:
const targetUrl = ''; // 这里是你的目标URL变量 if (targetUrl.trim()) { location.replace(targetUrl); }
备注:内容来源于stack exchange,提问作者Tamás Bolvári
相关产品推荐
相关产品推荐

