简写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会遇到这个问题,并发布另一个问题:-)