IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    javascript 的 quine 程序升级版

    justjavac (justjavac@gmail.com)发表于 2013-10-11 00:00:00
    love 0

    Quine 以哲学家 Willard van Orman Quine (1908-2000) 而命名,在维基百科中她的定义是:

    一个 quine 是一个计算机程序,它不接受任何输入,且唯一的输出就是自身的源代码。

    编写出某个语言中最简短的 quine 通常作为黑客们的消遣,比如下面的 javascript 代码就是一个 quine 程序:

    !function $(){console.log('!'+$+'()')}()
    

    网上已经有很多黑客写出了各种各样的 quine 程序,因此我就不再班门弄斧了。 但是,既然我博客的关于页面都已经折腾出升级版了,那么我们就再折腾一个 quine++ 出来。

    quine 程序的升级版——动态的 quine。

    点此查看对比版:http://jsfiddle.net/justjavac/RN2PL/ 注意输出结果的红字部分

    通过查看源代码的几个 javascript 关键字可以看出:

    • setInterval 和 Date 用来做动态效果
    • 他自己输出了自己,而且 Date 还是动态的:

      s = ( "setInterval(z='" // 外层代码
            + z.replace(/[\\\']/g,"\\$&") // COOL
          + "\')" ) // 赋值结束
          .match(/.{1,37}/g).join("\\\n"); // 组装
      
    • 输出到 document.body.innerHTML,并用

       标签包围起来

    • 动态替换字符串的一部分。

    最后在附赠一个,这个其实不能算是严格的 quine 程序:可以滚动的地球仪:



沪ICP备19023445号-2号
友情链接