简写Javascript变量语法

简写Javascript变量语法,javascript,Javascript,我甚至不知道从哪里开始搜索这个问题的答案,我以前从未见过这样的语法 function (_d) { this.xiSWFPath = !_d ? "expressinstall.swf" : _d; this.setAttribute("useExpressInstall", true); } 这等于 this.xiSWFPath = if not (_d) [declared true, else false] then expressinstall.swf else _d

我甚至不知道从哪里开始搜索这个问题的答案,我以前从未见过这样的语法

function (_d) {
    this.xiSWFPath = !_d ? "expressinstall.swf" : _d;
    this.setAttribute("useExpressInstall", true);
}
这等于

this.xiSWFPath = if not (_d) [declared true, else false] then expressinstall.swf else _d
我明白这是一个初学者的问题!
我在哪里可以了解有关此语法的更多信息?

这是
操作符,它至少可以追溯到70年代的C语言

测试表达式?表达式1:表达式2

如果测试表达式的计算结果是真实的,那么将计算表达式1,这就是整个表达式的值。否则,它就是表达式2

操作符绑定非常松散,从左到右(小心,PHP程序员!)。使用括号总是安全的,而且(通常)可读性更高


请注意,这是表达式语法的一部分。构造可以作为任何表达式的一部分出现在任何位置。在您的示例中,它是赋值操作右侧的表达式(作为
var
语句的一部分)。

有问题的行
this.xiSWFPath=_D“expressinstall.swf”:等于:

if (! _d ) {
    this.xiSWFPath = "expressinstall.swf";
} else {
    this.xiSWFPath = _d;
}
此链接提供了有关多种语言速记的更多信息:


希望这有帮助。

您看到的是or(尝试搜索该术语,您会找到很多。)

这扩展到

if(!_d) 
  this.xiSWFPath = "expressioninstall.swf";
else 
  this.xiSWFPath = _d;
if(!\u d)更像是对声明的检查,它是说如果_d是,或者计算为false,在javascript中相当多的值都是false

if(_d in [undefined, null, 0, false, '', NaN]) //psydo-code does not work.

更非正式地说,如果“d”没有很好的值,请使用rexpressionstall.swf,否则请使用“d”。

这是if语句表示法的缩写。它存在于大多数基于c的语法语言中,被称为三元表达式。这是一个“如果/否则”的速记<代码>(x)?(y):(z)
相当于
if(x){(y);}else{(z);}
也称为“if-then-else”语句(if)?然后:else+1。不过,在本例中,它可能最好写为
this.xiSWFPath=_d | | |“expressinstall.swf”
@ruakh是的,确实如此!也许OP会遇到这个问题,并发布另一个问题:-)