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

javascript表达式中的三个分号起什么作用?,javascript,compression,minify,Javascript,Compression,Minify,我在这里和那里的一些表达式中看到了三重分号。 它有逻辑上的效果吗 我所见过的最接近解释的东西是它告诉迪安·爱德华兹压缩机忽略这条线 ;;; var someVar = 'Rebel'; 没什么。绝对没有 三个分号,十个分号,一百个分号,它们都被解释为相同的结果:无它们是空语句,没有效果。除非语法需要语句,否则解释器或编译器可能会删除它们 它会让人们对StackOverflow提出问题 除此之外,它什么也不做。将空语句结束3次。调试代码中有以三个分号开头的行:它表示这些行不应出现在生产环境中。J

我在这里和那里的一些表达式中看到了三重分号。
它有逻辑上的效果吗

我所见过的最接近解释的东西是它告诉迪安·爱德华兹压缩机忽略这条线

;;; var someVar = 'Rebel';

没什么。绝对没有


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

它们是空语句,没有效果。除非语法需要语句,否则解释器或编译器可能会删除它们

它会让人们对StackOverflow提出问题


除此之外,它什么也不做。

将空语句结束3次。

调试代码中有以三个分号开头的行:它表示这些行不应出现在生产环境中。Javascript是通过压缩器或其他算法运行的,这些算法会删除

;;; console.log("only run this line when debugging!");
如上所述,三个分号实际上在Javascript中没有任何作用:它只是结束三个连续的空语句。如果使用了实际的注释

// console.log("only run this line when debugging!");
然后,当您想要进入调试模式时,您必须进入并手动删除所有注释,然后在完成后进入并将它们放回原处。另一种解决方案是创建一个
DEBUG
变量,并将所有调试行包装在一个条件中:

var DEBUG = true;
if(DEBUG){
     console.log("only run this line when debugging!");
}
但这有点麻烦,实际上会在Javascript文档中添加不需要的代码。当然,您可以通过压缩器运行JS来删除
调试
条件,但在这一点上,您最好只使用
方法,这更简单


有关这方面的真实示例,请参见。顺便说一句,我认为语法来自。

请发布一些示例。它在不同的上下文中可能有不同的含义。代码示例?我不相信这是我遇到过的惯例或特殊语法。你能举个例子吗?如果我没弄错的话,
相当于
,因为空语句不执行任何操作。我猜有人在用
以截断代码或其他内容。另外,请确保您正在阅读的代码实际上是JavaScript:-)可能您正在考虑for循环中的一个双分号,例如
for(;;)…
它是三条鳗鱼。特别是如果你的
@
靠近水(由
}
指示),当你看到这些时,你会非常小心,除非你穿着油腻的斗篷或长袍或湿滑的斗篷,因为他们的溺水攻击比一轮就可以杀死你。让我成为让你超过10公里的那个人(代表):@Gert-我也用纳秒来测量时间。:)伙计们,这是四核处理器的时代。真的不需要更多的时间来解析更多奇怪的分号!天啊,这不完全是“没什么”。。。多个分号的作用与单个分号相同,但根本不使用分号,并且依赖解释器的“自动插入分号”是一种不好的做法。在大多数情况下,不带分号的回车只会起作用,但在少数情况下,结果会出人意料且出错。您可以说“compile”,但Javascript是一种解释语言(本机)。它根本不会被编译。虽然谁知道未来会怎样;事实上,新版本确实将其编译为机器代码。嗯,我想我们只知道两个空语句。我们不知道这三个分号不是跟在一个非空的语句后面。我对这个问题的理解是,发布的代码是“他见过的最接近的东西”,不一定是他“到处看到”的例子之一。OP的代码清楚显示的四个分号中只有两个空语句。@user107463您能对此发表意见吗?超过1k的方法。似乎
grunt contrib uglify
不会删除此项。大多数压缩器不会自动删除以
开头的行,这只是一些专用软件使用的约定。