Javascript 多么奇怪的语法啊?
我在JQuery站点上发现了未知的代码构造。经过一些格式化后,它看起来像:Javascript 多么奇怪的语法啊?,javascript,Javascript,我在JQuery站点上发现了未知的代码构造。经过一些格式化后,它看起来像: function (a,c) { c==null && (c=a,a=null); return arguments.length>0 ? this.bind(b,a,c) : this.trigger(b) } 函数的第一行是什么意思?这是一个技巧还是标准的JS代码构造?这是一个技巧,它使用布尔短路求值,仅在第一个求值为真时才执行第二个一半。Pe
function (a,c) {
c==null && (c=a,a=null);
return arguments.length>0
? this.bind(b,a,c)
: this.trigger(b)
}
函数的第一行是什么意思?这是一个技巧还是标准的JS代码构造?这是一个技巧,它使用布尔短路求值,仅在第一个求值为真时才执行第二个一半。Perl通常有以下特点:
<something> or die
那是一种丑陋的写作方式
if(c==null) {
c = a;
a = null;
}
这利用了这样一个事实,即布尔
&&
的第二部分将在且仅当第一部分的计算结果为true时执行。表达式使用两个JavaScript功能:
- 布尔运算符的短路评估:in,
a&&(b)如果(a)(b),则代码>相当于
代码>
- 分组赋值表达式:in,
相当于a=b,b=c
{a=b;b=c}
if (c == null) {
c = a
a = null
}
它是Java、php、Javascript和其他任何语言的标准。如果您要查看jQuery代码,请查看开发副本,而不是缩小副本。到开发副本。@Tom:JavaScript中的不同于其他语言中的C语法。哇,那些代码缩略器很有攻击性-如果(C==null){C=a;a=null},它只比
短一个字符
逗号使两个命令都不需要分号就可以执行。这反过来又允许两个语句在一行中执行,这比if语句节省了字符数。@Gunslinger:实际上快了多少?Python还允许您使用a或B
作为类似a!=null&&A==真?A:B
。虽然在Python中,您可以将其称为A if A!=无且A==True,否则B
。不过,我可能遗漏了Python使用的一些微妙之处。@JAB在JavaScriptor中这是可能的,非常难看。而且对许多开发者来说非常不直观。你能找到写它的人并踢他们吗。@Schroedingers猫:因为变量名为a
,b
,c
,这段代码可能是由代码缩小器生成的。使用。丑陋?这解释了很多,不是吗;D
if (c == null) {
c = a
a = null
}