本文来自个人博客: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 程序:能够滚动的地球仪: