javascript表达式中的三个分号有什么作用?

Cha*_*son 8 javascript compression minify

我在这里和那里看过几个表达式的三分号.
它有任何合理的效果吗?

我看到的最接近解释的是,它告诉Dean Edwards压缩器忽略该行.

;;; var someVar = 'Rebel';
Run Code Online (Sandbox Code Playgroud)

Joe*_*ams 26

它让人们在StackOverflow上提问.

除此之外,它什么也没做.


Jac*_*kin 18

没有.绝对没有.

三个分号,十个分号,一百个分号,它们都被解释为相同的结果:没有.

  • 它并不完全"没有"......多个分号与单个分号完全相同,但完全不使用分号并依赖于解释器的"自动分号插入"是一种不好的做法.在大多数情况下,没有分号的回车将起作用,但在少数情况下,结果将是意外和错误的. (2认同)

bre*_*ine 11

以三个分号开头的行用于调试代码:它表示这些行不应出现在生产环境中.Javascript通过压缩器或其他算法运行,;;;在创建优化的JS文件时删除行.

;;; console.log("only run this line when debugging!");
Run Code Online (Sandbox Code Playgroud)

如上所示,三个分号在Javascript中实际上什么也没做:它只是结束了三个连续的空语句.如果使用了实际评论

// console.log("only run this line when debugging!");
Run Code Online (Sandbox Code Playgroud)

然后,当你想进入调试模式时,你必须进入并手动删除所有注释,然后在完成后进入并将它们放回去.另一种解决方案是创建一个DEBUG变量并在条件中包装所有调试行:

var DEBUG = true;
if(DEBUG){
     console.log("only run this line when debugging!");
}
Run Code Online (Sandbox Code Playgroud)

但这有点麻烦,实际上会为您的Javascript文档添加不需要的代码.当然,您可以通过压缩器运行JS来删除DEBUG条件,但此时您也可以使用;;;更简单的方法.

请参阅此问题以获取此类的真实示例.顺便说一句,我认为语法来自emacs.


Inc*_*ito 8

结束一次空声明3次.