2014-04-22 6 views
0

삼항 연산자를 처음 사용했습니다. 나는 다음과 같은 기능을 가지고있다. 무슨 일이 벌어지고 있는지 이해하려고 노력 중입니다.함수의 삼항 연산자

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

나는 무엇이든지 전에 알고 있습니까? 는 조건이고, 그 뒤에 오는 것은 변수가 조건이 참이면 변수가되고 콜론 뒤에는 조건이 참이 아닌 경우 cariable이되는 값입니다. 이제 분명히 두 가지 조건과 세 가지 가능한 결과가 있습니다. 이것은 Ternary 구조를 가진 if/else if 문입니다. 설명이 크게 감사 할 것입니다.

감사합니다.

답변

6

이것은 한 행에 두 개의 삼항 연산자입니다. 이것은 다음과 같습니다.

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

한 줄로 된 두 개의 삼원 문자는 나쁜 생각이므로 읽기가 어렵습니다. 기본적으로 이것을 이렇게 나눌 수 있습니다.

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

괄호는 안쪽 삼항을 표시하는 데 도움이됩니다.

+0

고마워요! 지금 더 의미가 있습니다. 이제 문제는 헥스가 문자열이 될 것이라는 것입니다. 비어 있거나 일부 값이 있습니다. 첫 번째 if (hex)에서 무엇을 평가할 것입니까? 그것을 명확히하기 위해 더 많은 컨텍스트가 필요한지 여부를 모릅니다. – mauricioSanchez

+0

첫 번째 줄은 16 진수가 값을 갖고 있는지 여부를 확인합니다. 실제로'null','undefined' 또는 빈 문자열' '''이면 if 문은 실패하고 마지막 else 문으로 바운스됩니다. –