函数中的三元运算符

时间:2014-04-22 17:14:07

标签: javascript ternary-operator

我是三元运营商的新手。我有以下功能。我正在努力了解发生了什么:

function toProperHex(hex) {
    hex = hex.toLowerCase();
    return hex ? hex != 'ffffff' ? '#' + hex : '#eee' : '#000';
}

我知道之前的事情是什么?条件是什么,接下来是变量在条件为真时变为的值,并且在冒号之后,如果条件不为真,则变为可变的变量。现在显然有两个条件和三个可能的结果。这是一个带有三元结构的if / else if语句。非常感谢澄清。

谢谢!

1 个答案:

答案 0 :(得分:6)

这是一条线上的两个三元运算符。它等同于:

if(hex) {
    if(hex != 'ffffff') {
        return '#' + hex;
    } else {
        return '#eee';
    }
} else {
    return '#000';
}

我认为一行中的两个三元组是一个坏主意,使它们难以阅读。你基本上可以这样划分

return hex ? (hex != 'ffffff' ? '#' + hex : '#eee') : '#000';

圆括号帮助显示内在的三元。