javascript
js里面字符数字和数字相加_「译」5 个奇怪的只会在 JS 里才发生的趣事
JavaScript 是一門棘手的語言,就其代碼的解析和運行方式,容易讓人感覺困惑。這是一門面向對象的語言,但很多年來語言標準里沒有類。它最初是為瀏覽器創造的,但現在也可以在服務器上運行,還可以操作文件系統。
多年以來,我碰到了一些特殊且有趣的代碼。下面展示的這些例子僅適用于 JavaScript,我總結了 5 個。
1. 連接數組得到的是字符串
用 + 號連接數組得到的結果是字符串。
這件令人困惑的事情發生的原因,在于這里的兩個數組都被轉為對象、然后再相加的:
[1, 2, 3, 4] + [5, 6, 7, 8]// 被解釋為:"1,2,3,4" + "5,6,7,8"// 結果如下:"1,2,3,45,6,7,8"2. BaNaNa?
下面展示了連接值時 JavaScript 類型推斷機制對結果的影響作用:
這是底層發生的事情:
"b" + "a" + + "a" + "a" // 被解釋為:"b" + "a" + (+"a") + "a"// (+"a") 以為以 + 開頭,因此這是要把 "a" 轉為數字,// 但 "a" 是不能正確轉為數字的,因此結果是 NaN (not a number):"b" + "a" + NaN + "a"// NaN 在連接的時候轉成了字符串,變成 "NaN" 了:"b" + "a" + "NaN" + "a"// 以下就是最終的連接結果了:"baNaNa"3. 這是一段有效的 JS 代碼(稱為 JSF***)
[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]][([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+[+[]]]+([]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[!![]+!![]+!![]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!![]+[+[]]]+(![]+[])[!![]+!![]]+(![]+[])[!![]+!![]]])[+!![]+[+[]]]+([][[]]+[])[+!![]]+(![]+[])[!完整代碼太長了,這里展示了部分,可以訪問 jsf___example.js 文件查看完整代碼。
是的,這是一段有效的 JS 代碼。在控制臺執行后,會看到下面的結果:
事實證明,任何 JavaScript 函數、字符串、變量或數據類型都可以在 JS 中由 6 個字符的組合表示,并生成完全有效的現成JavaScript 代碼。 在 Brainf*** 編程語言之后,這個想法被稱為 JSF***。
你可以在這個 Github 倉庫里查看更多關于 JSF*** 的信息。
4. 可以在 JavaScript 中使用 HTML 注釋
在 JavaScript 中使用 HTML 代碼是完全有效的,可以用來替換我們常用的 // 或 /**/ 注釋。實際上, 和 這些標記在 JavaScript 中什么事情都不做,會被忽略。
許多 JavaScript 語法高亮器都沒有解釋這個符號。所以,盡管很有趣,但在 JS 中全部使用 HTML 注釋可能并不實際。
這是因為在
總結
以上是生活随笔為你收集整理的js里面字符数字和数字相加_「译」5 个奇怪的只会在 JS 里才发生的趣事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 启动未初始化小应用程序_SpringBo
- 下一篇: python编程300例_经典编程100