为什么 JavaScript 中不考虑 url 第一个参数?

kod*_*ire 1 javascript url-parameters query-string urlsearchparams

const url = new URLSearchParams('https://example.com?q1=1&q2=2');
console.log(url.has('q3')) // returns false as expected
console.log(url.has('q2')) // returns true as expected
console.log(url.has('q1')) // returns false as NOT expected
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

Que*_*tin 5

如果传递一个字符串,构造URLSearchParams函数期望该字符串是查询字符串而不是完整的 URL。

q1不会出现,因为您的第一个参数是https://example.com?q1

const url = new URLSearchParams('https://example.com?q1=1&q2=2');
console.log([...url.entries()]);
Run Code Online (Sandbox Code Playgroud)

URL如果您想解析完整的 URL,请使用构造函数。

const url = new URL('https://example.com?q1=1&q2=2');
console.log(url.searchParams.has('q3'))
console.log(url.searchParams.has('q2'))
console.log(url.searchParams.has('q1'))
Run Code Online (Sandbox Code Playgroud)