邪修 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 入门课程》开始!