diff --git a/lib/buffer.js b/lib/buffer.js index 2349474952c462..fa8d1c61d4a309 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -588,9 +588,10 @@ function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { } else if (byteOffset < -0x80000000) { byteOffset = -0x80000000; } - byteOffset = +byteOffset; // Coerce to Number. - if (isNaN(byteOffset)) { - // If the offset is undefined, null, NaN, "foo", etc, search whole buffer. + // Coerce to Number. Values like null and [] become 0. + byteOffset = +byteOffset; + // If the offset is undefined, "foo", {}, coerces to NaN, search whole buffer. + if (Number.isNaN(byteOffset)) { byteOffset = dir ? 0 : (buffer.length - 1); } dir = !!dir; // Cast to bool.