1

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

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

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

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

但是你能用一个完整的 if 语句来做到这一点吗?

4

4 回答 4

3

if是一个声明。语句不能用作表达式的一部分。

通常,表达式由运算符和子表达式组成并创建值。语句不属于这些类别中的任何一个,它们不是表达式,也不是运算符。

有关更多技术信息,请查看 ECMAScript 规范:http ://es5.github.com/ 。

于 2013-03-01T01:16:57.227 回答
1

不,这是无效的 JavaScript 语法,所以你不能这样做。

我不确定您为什么要这样做,因为我实际上认为它会导致清晰度下降(那里有很多混乱的符号)。

如果你想在不使用三元运算符的情况下做一些花哨的单线来迷惑人们,你可以根据元素长度进行数组/字符串操作:

policeRecord = "Hi" + (new Array(+(x < crimes.length) + 1)).join(', ');
于 2013-03-01T01:15:39.333 回答
0

您还可以创建一个函数à la SQL COALESCE(但检查true而不是NULL):

function iftrue(checkThis, returnIfTrue, returnIfFalse) {
    if(checkThis) {
        return returnIfTrue;
    }
    return returnIfFalse;
}
policeRecord = "Hi" + iftrue(1 < crimes.length, ", ", "");

不过,不确定那会好多少。

于 2013-03-01T02:11:08.940 回答
0

if是一个语句并且不返回值,而是?一个操作符

function值得注意的情况下,有一个函数语句和一个函数运算符,所以你可以这样做

function () { }  // function statement

你也可以做

var fn = function () { };  // function operator

简短的回答:你不能替换或互换 if 和 ?。您可以创建一个执行此操作的函数,但通过函数运行并没有原生表达式的性能。

于 2013-03-01T01:29:57.717 回答