在 JavaScript 中,井号符号(#)可以作为注释的起始符号吗?

6

在JavaScript中,井号(#)是否会启动注释?我正在使用带有NPM的网站,在尝试使用Grunt进行JavaScript最小化时,Uglify报错:

Warning: Uglification failed.
Unexpected character '#'.
Line 1 in app/min-libs/node_modules/grunt-contrib-jshint/node_modules/jshint/nod
e_modules/cli/examples/cat.js
 Use --force to continue.

所指的文件名似乎来自另一个NPM模块,这意味着他们知道自己在做什么。因此,当我进入app/min-libs/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/cat.js时,有问题的那一行是:

#!/usr/bin/env node

这是一条评论,还是这个NPM模块的所有者知道某些超级秘密的禁止使用的JavaScript技术?

1个回答

6
这不是 JavaScript 技术,而是 *nix 操作系统的技术。它被称为 shebang。引用自维基百科:
在类 Unix 操作系统中,当带有 shebang 的脚本作为程序运行时,程序加载器将解析脚本初始行的其余部分作为解释器指令;指定的解释器程序将被运行,并将最初尝试运行脚本时使用的路径作为参数传递给它。
因此,如果 cat.js 文件具有可执行权限,则可以像可执行文件一样在 shell 中执行。
cat.js

代替

node cat.js

哇,每天都能学到新东西。我想我得找到一种方法让Uglify忽略那些有这个shebang的文件。谢谢。 - trysis
如果我可以问一下,@thefourtheye,你的个人资料名字是从哪里来的?我知道第三只眼睛是能看到想象力或其他东西的眼睛,那么第四只眼睛是什么? - trysis
1
@trysis 不客气 :) 根据印度教神话,湿婆神有三只眼睛。由于他被称为第三只眼睛,所以我拿了第四只眼睛 :P - thefourtheye
@trysis 谢谢 :) 如果这个答案对你有帮助,请考虑接受它 :) - thefourtheye

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接