我试图将以下代码转换为三元运算符,但它不起作用,我不确定为什么.我认为我的问题是我不知道如何以elseif
三元格式表达操作.从我的理解和使用格式elseif
的if
操作执行相同的方式: (condition) ? 'result'
.
if ($i == 0) {
$top = '<div class="active item">';
} elseif ($i % 5 == 0) {
$top = '<div class="item">';
} else {
$top = '';
}
$top = ($i == 0) ? '<div class="active item">' : ($i % 5 == 0) ? '<div class="item">' : '';
Run Code Online (Sandbox Code Playgroud)
Sam*_*ook 50
$top = ($i == 0) ? '<div class="active item">' : (($i % 5 == 0) ? '<div class="item">' : '');
Run Code Online (Sandbox Code Playgroud)
你需要在整个else块周围添加括号
los*_*rse 14
三元运算符不支持真正的if... else if... else...
操作; 但是,您可以使用以下技术模拟行为
var name = (variable === 1) ? 'foo' : ((variable === 2) ? 'bar' : 'baz');
Run Code Online (Sandbox Code Playgroud)
我个人并不关心这一点,因为我发现它不那么可读或优雅.我通常更喜欢这种switch
说法.
switch (variable) {
case 1 : name = 'foo'; break;
case 2 : name = 'bar'; break;
default : name = 'bas'; break;
}
Run Code Online (Sandbox Code Playgroud)
可能已经太晚了,无法分享一些观点,但尽管如此:)
恕我直言,最终由开发人员决定代码可读性和性能之间的权衡方程式,进而决定在任何特定情况下可以使用三元、if else-if else 或 switch-case 的内容。