函数中的三元运算符

mau*_*hez 0 javascript ternary-operator

我是三元运营商的新手.我有以下功能.我想了解发生了什么:

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

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

谢谢!

Mat*_*eer 6

这是一条线上的两个三元运算符.它相当于:

if(hex) {
    if(hex != 'ffffff') {
        return '#' + hex;
    } else {
        return '#eee';
    }
} else {
    return '#000';
}
Run Code Online (Sandbox Code Playgroud)

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

return hex ? (hex != 'ffffff' ? '#' + hex : '#eee') : '#000';
Run Code Online (Sandbox Code Playgroud)

括号帮助显示内部三元.