邪修 JavaScript 10 连击|无限循环弹窗、原型链污染、内存泄漏

编程狮(w3cschool.cn) 2025-08-07 17:21:38 浏览数 (132)
反馈

邪修 JavaScript ,10 段“千万别上生产”的黑魔法代码
——仅供技术猎奇,切勿真用!

⚠️ 每条都可能:性能爆雷、内存泄漏、调试器崩溃、老板原地升天

面试炫技 OK,项目敢用就等死!

1️⃣ 一行无限循环弹窗

while(1) alert('邪修JS');

浏览器直接卡死,用户只能强制关机。

2️⃣ 原型链污染全局

Object.prototype.toString = () => '💥';
console.log(({}).toString()); // 💥

所有对象行为被篡改,调试器原地崩溃。

3️⃣ 隐式强制类型地狱

[] + {}; // "[object Object]"
{} + []; // 0

不同位置结果不同,全靠解析器心情。

4️⃣ with 作用域黑洞

with({a:1}){ var a = 2; console.log(a); } // 2

作用域链动态查找,IDE 无法静态分析。

5️⃣ 动态函数名

const evil = new Function('a', 'b', 'return a + b');
console.log(evil(1, 2)); // 3

运行时编译代码,静态扫描工具全部失明。

6️⃣ 隐式全局变量泄漏

function leak() { undeclared = 'leaked'; }
leak();
console.log(undeclared); // leaked

变量泄漏到全局,调试器找不到定义。

7️⃣ 循环引用内存泄漏

const a = {};
const b = {};
a.b = b;
b.a = a;

互相引用导致无法垃圾回收,内存爆炸。

8️⃣ eval 远程代码执行

eval(prompt('输入代码'));

直接把浏览器变成远程 Shell。

9️⃣ 事件监听器无限叠加

document.addEventListener('click', () => console.log('click'));
document.addEventListener('click', () => console.log('click'));
// 重复添加,内存爆炸

监听器无限叠加,性能直线下降。

🔟 隐式类型转换陷阱

console.log(!![]); // true
console.log(!!{}); // true
console.log(!!''); // false

隐式类型转换导致逻辑混乱,调试器无法追踪。

邪修口诀

“作用域链当迷宫,原型链当滑梯;

隐式转换当魔法,内存泄漏当烟花。”

PS

想要正经的学习 JS ,从编程狮的《JavaScript 入门课程》开始!

0 人点赞