我想像这样连接一个if语句:
policeRecord = "Hi" + (if (x < crimes.length) {", ";});
我知道你可以用三元组来做到这一点:
policeRecord = "Hi" + ((x < crimes.length) ? ", " : "");
但你能用完整的if语句来做吗?
答案 0 :(得分:3)
if
是声明。语句不能用作表达式的一部分。
通常,表达式由运算符和子表达式以及创建值组成。语句不属于任何这些类别,它们不是表达式而不是运算符。
有关更多技术信息,请查看ECMAScript规范:http://es5.github.com/。
答案 1 :(得分:1)
不,这是无效的JavaScript语法,所以你不能这样做。
我不确定你为什么要这样做,因为我实际上它会导致失去清晰度(那里有很多混乱的符号)。
如果你想在不使用三元运算符的情况下做一些花哨的单行来混淆人,你可以根据元素长度进行数组/字符串操作:
policeRecord = "Hi" + (new Array(+(x < crimes.length) + 1)).join(', ');
答案 2 :(得分:0)
if
是声明,不会返回值,而?
是运算符。
在function
的情况下,值得注意的是,有一个函数语句和一个函数操作符,所以你可以这样做
function () { } // function statement
你也可以
var fn = function () { }; // function operator
简短回答:如果和?你不能替换或交换。你可以创建一个执行它的函数,但是通过函数运行并不具有本机表达式的性能。
答案 3 :(得分:0)
你也可以创建一个函数àla SQL的COALESCE
(但检查true
而不是NULL
):
function iftrue(checkThis, returnIfTrue, returnIfFalse) {
if(checkThis) {
return returnIfTrue;
}
return returnIfFalse;
}
policeRecord = "Hi" + iftrue(1 < crimes.length, ", ", "");
不确定会有多好。