[whatwg/url] URLSearchParams delete and iterator ambiguity (#188)

The appears to be a slight ambiguity in the API for `URLSearchParams` as reported in Node.js issue https://github.com/nodejs/node/issues/10481.

Specifically, given the following test case:

```js
const url = new URL("http://domain.com/?var1=value&var2=");
const params = Array.from(url.searchParams);

// There is no `.clear()`
for (let param of url.searchParams) {
  console.log( param[0] );
  url.searchParams.delete( param[0] );
}
```

In Node.js, the iterator that is created is live... meaning that the call to `url.searchParams.delete()` modifies the iterator itself and the only key that is output to the console is `var1`. This behavior *matches* the behavior implemented in Firefox.

Chrome, on the other hand, appears to copy the data on creation of the iterator, causing both `var1` and `var2` to be output to the console (which, I believe, is what users would most often expect to happen).

Unless I'm simply not seeing something in the URL spec, it does not appear to be clear which is the correct behavior.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/url/issues/188

Received on Wednesday, 28 December 2016 19:40:27 UTC