发布于 

生成一个前端url添加参数代码,避免通用bug

背景:生成一个前端url添加参数代码,避免通用bug

js url后加get参数,如果没有参数就加,有参数在参数后面加

ChatGPT

可以使用以下代码来实现:

function addGetParameter(url, parameter) {
if (url.indexOf('?') === -1) {
return url + '?' + parameter;
} else {
return url + '&' + parameter;
}
}

使用示例:

var url = 'https://example.com';
var parameter = 'foo=bar';

var updatedUrl = addGetParameter(url, parameter);
console.log(updatedUrl); // 输出:https://example.com?foo=bar

var urlWithParameter = 'https://example.com?existingParam=123';
var updatedUrlWithParameter = addGetParameter(urlWithParameter, parameter);
console.log(updatedUrlWithParameter); // 输出:https://example.com?existingParam=123&foo=bar

这个函数接受两个参数:url是原始的URL,parameter是要添加的GET参数。如果URL中没有问号(即没有GET参数),则直接在URL末尾添加一个问号和参数;如果URL中已经有GET参数,则在URL末尾添加一个与号(&)和参数。

这代码有没有bug,适用所有url场景吗

ChatGPT

这段代码在基本的URL场景下是有效的,但可能存在一些边缘情况和特殊情况,需要根据具体的使用情况进行适当的修改。

  1. 如果URL中已经存在相同的参数,这段代码会直接在URL末尾添加一个与号(&)和参数,而不会进行参数值的替换。这可能导致重复的参数存在于URL中。如果需要替换已存在的参数值,可以在代码中添加逻辑来处理。

  2. 如果参数的值包含特殊字符,如空格、斜杠等,可能会导致URL格式错误。在添加参数之前,可以使用encodeURIComponent()函数对参数值进行编码,以确保URL的正确格式。

  3. 如果URL中已经存在锚点(#),这段代码会直接在锚点后面添加参数,而不是在URL的查询参数部分添加。如果需要在查询参数部分添加参数,可以在代码中添加逻辑来处理。

总的来说,这段代码是一个基本的实现,适用于大多数简单的URL场景。但对于复杂的URL场景,可能需要根据具体的需求进行修改和优化。