JavaScript中的Quines
一个Quine是一个程序,它不接受任何输入,但输出其自身代码的一个副本。与其他语言不同,使用JavaScript/NodeJS编写Quine非常容易。所采用的方法是将JavaScript中的任何函数转换为字符串并打印出来。这使我们能够如下所示地输出函数的代码:
示例:
示例: 以上函数打印出自己的源代码,但它不是可执行的文件。 **** 我们会添加一条语句使其可以被调用。
输出:
注意: 我们需要在日志语句中添加额外的内容来实现我们的目标。末尾的 ;
是不必要的。
我们可以让它更加优雅。我们知道JavaScript可以通过使用IIFE(立即调用函数表达式)在定义时立即运行函数。我们将在我们的代码中结合这个,如下所示:
示例:
输出:
请注意,console.log()语句会根据需要进行操作。我们可以通过添加箭头运算符和格式化字符串,使其更加美观。以下是生成的代码:
示例:
为了理解代码,我们删除了IIFE和格式字符串中的额外括号。添加的空格使其更清晰。第一个 $
是一个包含箭头函数的变量。_
是箭头函数的随机参数,没有被使用。箭头后面是我们的格式字符串,它可以分为两部分,字符串“$=”和变量,第一个 $
本身。
示例:
Quine需要能够执行,但这并不意味着会出现错误的程序不能是Quine。下面的示例仍然是一个Quine的示例。当作为.js文件在NodeJS的帮助下执行时,该程序输出它自己的源代码。NodeJS在第一行返回一个错误,而代码的其余部分就是错误的样子。
示例: