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)
在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)
我不认为三元运算符可以用来控制两个这样的值:
如何分离它们:
my_alert(($status?"Accepted":"Declined"),($status?"alert-success":"alert-info"));
Run Code Online (Sandbox Code Playgroud)