盘点那些逆天的js代码

1,020 阅读1分钟

js.png

开始整活

推荐一个网站aem1k,集合了大佬们写的最逆天最离谱的代码。

sb?

打开控制台,输入以下代码回车,你将会得到一个'sb'

(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]

原理大概是这样

v2-c398dd6c5d33a24a85ded4964d74cc62_r.png

jsfuck也和这个类似,想了解的去可以看一下。

面向stackoverflow编程

try catch的正确使用方式

try {
  // any code
} catch(e) {
  location.href = `https://stackoverflow.com/search?q=js+${e.message}`
}

Evil.js 从入门到入狱

代码里埋雷?github

image.png

banana?

中间加了个NaN

'b'+'a'+ +'a'+'a'
// 'baNaNa'

a === a-1 结果为true

aInfinity无穷大时,a - 1的结果也是Infinity,所以a === a - 1的结果为true

同理,a的值为-Infinity时,此等式也成立。

const a = Infinity
console.log(a === a - 1)

数字字面量调用方法时的 . 歧义

  • 1.toString() → ❌ 报错(. 被当作小数点)
  • 1..toString() → ✅ "1"(第一个 . 是小数点,第二个是方法调用)
  • 1 .toString() → ✅ "1"(空格避免歧义)
  • (1).toString() → ✅ "1"(括号强制解析为数字)