在javascript三元运算符中正确使用逗号

Edd*_*die 2 javascript ternary-operator comma-operator

我没有使用if else语句,而是尝试使用三元运算符,但在语句中的某处有语法错误.

谁能告诉我哪里出错了?

声明是:

my_alert(status ? ('Accepted', 'alert-success') : ('Declined', 'alert-info'))
Run Code Online (Sandbox Code Playgroud)
  • my_alert是一个有2个参数的函数.
  • 状态只是评估为真或假.
  • 当我将多个参数传递给上面的表达式时,它不喜欢使用逗号.

在chrome和firefox中,当函数运行时,它会显示"alert-success"或"alert-info".它错过了第一个参数.

我已经看了stackoverflow的答案,但无论如何它告诉我,我正在做的是正确的.

任何帮助都会很棒.

Fel*_*ing 11

好吧,逗号运算符执行以下操作:

逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值.

这意味着,('Accepted', 'alert-success')评估'alert-success'(正如您已经注意到的).这里的逗号与分隔函数参数的逗号不同.您不能使用它将两个参数传递给函数.

你可以做的是将两个参数存储在一个数组中,然后用.apply它们将它们传递给函数:

// this is not the comma operator either, this is array literal syntax.
var args = status ? ['Accepted', 'alert-success'] : ['Declined', 'alert-info'];
my_alert.apply(null, args);
Run Code Online (Sandbox Code Playgroud)


sho*_*dev 5

我不认为三元运算符可以用来控制两个这样的值:

如何分离它们:

my_alert(($status?"Accepted":"Declined"),($status?"alert-success":"alert-info"));
Run Code Online (Sandbox Code Playgroud)