문제

이 질문은 이미 여기에 답이 있습니다.

이 코드는 무엇을 나타내나요? 나는 그것이 일종의라는 것을 알고 있습니다 if 대체 구문 ...

pattern.Gotoccurance.score != null ? pattern.Gotoccurance.score : '0'

업데이트:

이런 종류의 코딩에 필요한 것은 무엇입니까? 이것은 동일한 효율성을 가진 더 효율적이거나 단축 된 버전입니까?

도움이 되었습니까?

해결책

그것은 가정 어구 연산자는 다음과 같은 것과 같습니다.

if (pattern.Gotoccurance.score != null) {
  pattern.Gotoccurance.score;
} else {
  '0';
}

그러나 다음과 같이 게시 한 코드에 과제 명세서가 누락되었다고 생각합니다.

var score = pattern.Gotoccurance.score !=null ? pattern.Gotoccurance.score : '0';

그만큼 score 변수가 다음에 할당됩니다 pattern.Gotoccurance.score NULL이 아닙니다 :

var score;
if (pattern.Gotoccurance.score != null) {
  score = pattern.Gotoccurance.score;
} else {
  score = '0';
}

JavaScript에서 이러한 종류의 '기본값'할당을 수행하는 일반적인 패턴은 논리 또는 연산자를 사용하는 것입니다.||) :

var score = pattern.Gotoccurance.score ||  '0';

의 가치 pattern.Gotoccurance.score 에 할당됩니다 score 해당 값이 아닌 경우에만 변수 거짓 (거짓 가치는입니다 false, null, undefined, 0, 제로 길이 문자열 또는 NaN).

그렇지 않으면 거짓 인 경우 '0' 할당됩니다.

업데이트: 성능은 동일하며, 가독성에 중점을 두어야합니다. 저는 매우 간단한 표현식에서 Ternary Operator를 사용하려고 노력하며 형식을 개선하여 두 줄로 분할하여 더 읽기 쉬운 다음을 수행 할 수 있습니다.

var status = (age >= 18) ? "adult"
                         : "minor";

관련 질문 :

다른 팁

이것은 3 배 운영자, 진술이면 할 수있는 방법.

다시 작성하면 다음과 같습니다.

if (pattern.Gotoccurance.score != null) {
   return pattern.Gotoccurance.score;
} else {
   return '0';
}

이를 3 배 운영자라고합니다.

질문 업데이트에 "이런 종류의 코딩이 필요한 이유는 무엇입니까?"

때때로 3 원 운영자를 사용하여 복잡성을 줄일 수 있습니다.

예를 들어, 나는 그것을 확인 해야하는 웹 페이지가 있습니다. 적어도 세 개의 특정 텍스트 필드 중 2 개가 값을 입력했습니다. IF/Else Logic은 꽤 추악 해 보였지만, 3 배의 운영자는 몇 개의 필드 수를 결정하기 위해 하나의 라이너로 만들었습니다.

var numberFilledInFields = ( (firstName.length > 0 ? 1 : 0) +
                     (lastName.length > 0 ? 1 : 0) +
                     (zipCode.length > 0 ? 1 : 0) );

if (numberFilledInFields < 2)
{
    validation = false;
    return;
}

이 솔루션은 일부 대안보다 매우 우아하고 읽기 쉬운 것으로 보입니다.

3 원 운영자/조건부 운영자입니다.

수학에서, a 3 배의 운영 n = 3의 n-ary 작업입니다. 세트 A의 3 가지 작업은 A의 3 가지 요소를 취하고 결합하여 A의 단일 요소를 형성합니다.

그것은 if..else의 짧은 손 형태입니다

예 : 숫자가 고른지 여부를 알고 싶어

// if..else 접근법 사용

function CheckEvenOdd()
{
    var number = 2;
    if(number %2 == 0) alert("even");else alert("odd");
}

// Ternary 사용

function CheckEvenOdd()
{
    var number = 2;
    alert((number %2 == 0)?"even":"odd");
}

하나의 변형은 스위치입니다

// 스위치 사용

function CheckEvenOdd()
{
    var number = 2;
    switch(number %2)
    {
        case 0:alert("even");break;
        default:alert("odd");break;
    }
}

이제 설명한 것과 같이 간단한 if..else 조건이 있다면 Ternary를 계속 진행할 수 있습니다.

그러나 조건부 점검이 복잡해지면 If..else 또는 스위치로 가독으로 가십시오.

예를 들어, 3 차 연산자를 사용하여 최소 또는 최대 두 숫자를 수행하기는 쉽지만 3 개 이상의 숫자 중에서 가장 크고 두 번째로 큰 것을 찾기 위해 서투른 것이며 권장되지는 않습니다. 대신 .. else를 사용하는 것이 좋습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top