本文來自個人博客:http://justjavac.com/javascript/2013/10/11/javascript-quine-plus.htmljavascript
Quine 以哲學家 Willard van Orman Quine (1908-2000) 而命名,在維基百科中她的定義是:html
一個 quine 是一個計算機程序,它不接受任何輸入,且惟一的輸出就是自身的源代碼。java
編寫出某個語言中最簡短的 quine 一般做爲黑客們的消遣,好比下面的 javascript 代碼就是一個 quine 程序:segmentfault
!function $(){console.log('!'+$+'()')}()
網上已經有不少黑客寫出了各類各樣的 quine 程序,所以我就再也不班門弄斧了。 可是,既然我博客的關於頁面都已經摺騰出升級版了,那麼咱們就再折騰一個 quine++ 出來。ui
quine 程序的升級版——動態的 quine。 .net
http://jsfiddle.net/justjavac/RN2PL/code
點此查看對比版,注意輸出結果的紅字部分htm
經過查看源代碼的幾個 javascript 關鍵字能夠看出:ip
setInterval
和 Date
用來作動態效果他本身輸出了本身,並且 Date
仍是動態的:字符串
s = ( "setInterval(z='" // 外層代碼 + z.replace(/[\\\']/g,"\\$&") // COOL + "\')" ) // 賦值結束 .match(/.{1,37}/g).join("\\\n"); // 組裝
輸出到 document.body.innerHTML
,並用 <pre>
標籤包圍起來
最後在附贈一個,這個其實不能算是嚴格的 quine 程序:能夠滾動的地球儀: