Javascript 你能在不使用三元数的情况下连接if语句吗?

Javascript 你能在不使用三元数的情况下连接if语句吗?,javascript,Javascript,我想连接这样一个if语句: policeRecord = "Hi" + (if (x < crimes.length) {", ";}); policrecord=“Hi”+(如果(x

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

policeRecord = "Hi" + (if (x < crimes.length) {", ";});
policrecord=“Hi”+(如果(x
我知道你可以用三元数:

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

但是你能用一个完整的if语句吗?

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

我也不知道你为什么要这么做,因为我觉得这会导致清晰度下降(那里有很多混乱的符号)

如果您想在不使用三元运算符的情况下使用某种奇特的单行程序来迷惑人们,可以根据元素长度执行数组/字符串操作:

policeRecord = "Hi" + (new Array(+(x < crimes.length) + 1)).join(', ');
policrecord=“Hi”+(新数组(+(x
否,这是无效的JavaScript语法,因此无法执行

我也不知道你为什么要这么做,因为我觉得这会导致清晰度下降(那里有很多混乱的符号)

如果您想在不使用三元运算符的情况下使用某种奇特的单行程序来迷惑人们,可以根据元素长度执行数组/字符串操作:

policeRecord = "Hi" + (new Array(+(x < crimes.length) + 1)).join(', ');
policrecord=“Hi”+(新数组(+(x
如果
是一个语句。语句不能用作表达式的一部分

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


有关更多技术信息,请查看ECMAScript规范:.

如果
是一个语句。语句不能用作表达式的一部分

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


有关更多技术信息,请查看ECMAScript规范:.

如果
语句且不返回值,而
运算符

function
的情况下,值得注意的是,这里有一个function语句和一个function操作符,所以您可以这样做

function () { }  // function statement
你也可以这样做

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

简短回答:您不能替换或交换if and?。您可以创建执行此操作的函数,但在函数中运行并没有本机表达式的性能

如果
语句且不返回值,而
运算符

function
的情况下,值得注意的是,这里有一个function语句和一个function操作符,所以您可以这样做

function () { }  // function statement
你也可以这样做

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

简短回答:您不能替换或交换if and?。您可以创建执行此操作的函数,但在函数中运行并没有本机表达式的性能

您还可以创建一个函数作为SQL的
合并
(但是检查
true
而不是
NULL
):

函数iftrue(选中此项、returnIfTrue、returnIfFalse){
如果(选中此项){
回归真;
}
返回返回值;
}
policyrecord=“Hi”+iftrue(1

不过,不确定这会有多好。

您也可以创建一个函数,就像SQL的
合并
(但是检查
是否为true
,而不是
为NULL
):

函数iftrue(选中此项、returnIfTrue、returnIfFalse){
如果(选中此项){
回归真;
}
返回返回值;
}
policyrecord=“Hi”+iftrue(1

不过,不确定这会有多好。

这里的区别在于三元运算符会产生一个值。本质上,它会返回一些东西。
if
块只是一个代码块,没有结果值。可以将if语句包装在函数中:
policrecord=“Hi”+(函数(){if(x,但这违背了三元运算符的用途。如果您想降低代码的可读性,还可以执行
“Hi”+((x
。有趣的是,这里有另一种模糊的方式:
“Hi”+['','][x
@FelixKling这种方式实际上是可读的!这就是我所说的真正的乐趣!这里的区别在于,三元运算符产生一个值。本质上,它会返回一些东西。
if
块只是一个代码块,没有结果值。可以将if语句包装在函数中:
policrecord=“Hi”+(函数(){if(x,但这违背了三元运算符的用途。如果您想降低代码的可读性,还可以执行
“Hi”+((x
。有趣的是,这里有另一种模糊的方式:
“Hi”+['','][x
@FelixKling这种方式实际上是可读的!这就是我所说的真正的乐趣!有趣的是,ECMAScript规范没有将函数定义列为语句(它们有自己的部分)。事实上,它明确指出,作为语句处理的函数声明可能会导致问题:。函数似乎很特别。@FelixKling是的,javaScript很有趣,除了规范;)可能是因为它被当作文字处理,比如匿名对象的{}?我真的不知道。。。可能是函数表达式。但是函数声明是。。。我不知道它们是什么:有趣的是ECMAScript规范没有将函数定义列为语句(它们有自己的部分)。事实上,它明确指出,作为语句处理的函数声明可能会导致问题:。似乎是功能