1. 程式人生 > >僅用六種字元來完成Hello World,你能做到嗎?

僅用六種字元來完成Hello World,你能做到嗎?

Hello World 對於每一個開發者來說都不陌生,因為在我們學習任何一個語言或框架的時候,都會有一個Hello World的案例來幫助我們快速入門。 如果我們使用JavaScript來輸出Hello World的話,可以這樣寫: ```javascript alert("Hello World"); ``` 放入HTML: ```html ``` 在瀏覽器中開啟就可以如下情況輸出Hello World了: ![](https://img2020.cnblogs.com/other/626506/202011/626506-20201105113104799-1811237800.png) ## 挑戰:僅用六種字元來編寫JavaScripte 上面我們在JavaScript中實現Hello World的時候,除去HTML相關的標籤和屬性,上面的實現語句`alert("Hello World");`一共使用了13個字元,那麼有沒有辦法用更少的字元來實現一樣的功能呢?今天我們就來挑戰一下:**有沒有辦法僅使用6個字元來編寫JavaScripte程式,以實現Hello World的輸出?** ... ... ... 先思考一下,有思路沒?沒思路的話,下面有提示... ... ... ... ... ... ... ... **提示**:使用這六個字元:`(`,`)`,`+`,`[`,`]`,`!` ... ... ... ... ... ... ... 再思考一下,有思路沒?沒思路的話,下面有答案和解析... ... ... ... ... ... ... ... **答案**: ```html ``` 什麼?你不信這可以輸出Hello World?那麼你可以將其複製下來,放到HTML檔案中,再開啟試試吧! ## 為什麼? 為什麼我們可以僅使用這6個字元來編寫這些奇奇怪怪的JavaScript程式碼?這完全是由於JavaScript獨特的型別系統和轉換機制。 上面的6個字元可以分為三類: - `[`,`]`:用於建立陣列 - `!`,`+`:對陣列執行一些操作 - `(`,`)`:對操作進行分組 **基礎原理** - `[]`可以用來建立陣列,而`![]`則可以返回`false` - 預定義的規則:`2 + true`,會轉化為`2 + 1`,最後得到`3` - 預定義的規則:`2 + "2"`,會轉化為`2 + "2"`,最後得到`"22"` **提取字母**:`![]`可以獲取`false`,`![] + []`那可以獲取`"false"`字串,那麼我們就可以通過下標獲取其中的字母,比如:`(![] + [])[1]`可以獲取`false`字串中第二位的字母`a` **提取數字**:`![]`可以獲取`false`,由於`+false`可以獲取`0`,所以`+![]`就可以獲取到`0`;由於`+true`可以獲取`1`,所以`+!![]`就可以獲取到`1`。這樣依靠運算就可以獲取更多其他數字 好了,有了這些基礎基礎知識之後,對於這個神奇的答案知道是怎麼來的了吧? > 本文首發:[僅用六個字元來完成Hello World,你能做到嗎?](http://blog.didispace.com/javascript-6-char-hello-world/),轉載請註明該文章連結 ## 參考資料 - https://www.cnblogs.com/lzkwin/p/12131718.html - http://www.jsfuck.com/ > 歡迎關注我的公眾號:程式猿DD,獲得獨家整理的免費學習資源助力你的Java學習之路!另每週贈書不停哦~