diff --git a/lib/internal/url.js b/lib/internal/url.js index b61b699ecdfca7..4113a3bfe887df 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -817,6 +817,9 @@ class URLSearchParams { if (arguments.length < 1) { throw new TypeError('The `callback` argument needs to be specified'); } + if (typeof callback !== 'function') { + throw new TypeError('The `callback` argument must be a function'); + } let list = this[searchParams]; diff --git a/test/parallel/test-whatwg-url-searchparams.js b/test/parallel/test-whatwg-url-searchparams.js index ccc849993e58ce..e6bba03bb7768d 100644 --- a/test/parallel/test-whatwg-url-searchparams.js +++ b/test/parallel/test-whatwg-url-searchparams.js @@ -54,6 +54,8 @@ sp.forEach(function(val, key, obj) { sp.forEach(function() { assert.strictEqual(this, m); }, m); +assert.throws(() => sp.forEach(), TypeError); +assert.throws(() => sp.forEach(1), TypeError); m.search = '?a=a&b=b'; assert.strictEqual(sp.toString(), 'a=a&b=b');