diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index b7ae4d8da0e9bc..0491ee9abb46fc 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -556,7 +556,6 @@ function formatRaw(ctx, value, recurseTimes) { let braces; let noIterator = true; let i = 0; - let skip = false; const filter = ctx.showHidden ? ALL_PROPERTIES : ONLY_ENUMERABLE; let extrasType = kObjectType; @@ -697,7 +696,6 @@ function formatRaw(ctx, value, recurseTimes) { } else if (isModuleNamespaceObject(value)) { braces[0] = `[${tag}] {`; formatter = formatNamespaceObject; - skip = true; } else if (isBoxedPrimitive(value)) { let type; if (isNumberObject(value)) { @@ -757,11 +755,9 @@ function formatRaw(ctx, value, recurseTimes) { const indentationLvl = ctx.indentationLvl; try { output = formatter(ctx, value, recurseTimes, keys); - if (skip === false) { - for (i = 0; i < keys.length; i++) { - output.push( - formatProperty(ctx, value, recurseTimes, keys[i], extrasType)); - } + for (i = 0; i < keys.length; i++) { + output.push( + formatProperty(ctx, value, recurseTimes, keys[i], extrasType)); } } catch (err) { return handleMaxCallStackSize(ctx, err, constructor, tag, indentationLvl); @@ -871,9 +867,8 @@ function formatError(value) { } function formatNamespaceObject(ctx, value, recurseTimes, keys) { - const len = keys.length; - const output = new Array(len); - for (var i = 0; i < len; i++) { + const output = new Array(keys.length); + for (var i = 0; i < keys.length; i++) { try { output[i] = formatProperty(ctx, value, recurseTimes, keys[i], kObjectType); @@ -893,6 +888,8 @@ function formatNamespaceObject(ctx, value, recurseTimes, keys) { ctx.stylize('', 'special'); } } + // Reset the keys to an empty array. This prevents duplicated inspection. + keys.length = 0; return output; }