你可以在不使用三元的情况下连接if语句吗?

时间:2013-03-01 01:14:09

标签: javascript

我想像这样连接一个if语句:

policeRecord = "Hi" + (if (x < crimes.length) {", ";});

我知道你可以用三元组来做到这一点:

policeRecord = "Hi" + ((x < crimes.length) ? ", " : "");

但你能用完整的if语句来做吗?

4 个答案:

答案 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, ", ", "");

不确定会有多好。