Estaba depurando mi código javascript en la consola de Chrome el otro día y de repente comencé a encontrar un punto de interrupción en un código que no reconozco. ¿Es posible que sea parte de la propia consola y que, por accidente, se haya creado un punto de interrupción?
La cuestión es que este punto de interrupción se golpeaba una y otra vez, incluso cuando solo estaba escribiendo en la consola en una página en blanco sin ejecutar scripts .
Aquí está el código como se ve en el depurador:
(function i(t){let e;e="string"===t?new String(""):"number"===t?new Number(0):"bigint"===t?Object(BigInt(0)):"boolean"===t?new Boolean(!1):this;const s=[];try{for(let i=e;i;i=Object.getPrototypeOf(i)){if(("array"===t||"typedarray"===t)&&i===e&&i.length>9999)continue;const n={items:[],title:void 0,__proto__:null};try{"object"==typeof i&&Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor&&i.constructor.name&&(n.title=i.constructor.name)}catch(t){}s[s.length]=n;const o=Object.getOwnPropertyNames(i),r=Array.isArray(i);for(let t=0;t<o.length&&n.items.length<1e4;++t)r&&/^[0-9]/.test(o[t])||(n.items[n.items.length]=o[t])}}catch(t){}return s})Parece que está haciendo una verificación de tipos y devolviendo algunos primitivos, pero es bastante extraño. ¿Alguien tiene idea de lo que está pasando?
Revisé el código con el ícono de step en el depurador y aparentemente, la variable o utilizada en el bucle al final del código era la lista de +- 1000 nombres registrados JS (como "String", "Promise", "URLSearchParams", "TouchList", "DeviceMotionEventAcceleration", ... ). ¿Quizás esto es parte de la herramienta de autocompletar en la consola?