코드는 읽을 수 있어야 그렇게되고 간결해야하는 비용이 어떤되지 평균 존재의 간결한 - 당신이 다시 게시해야 그것에 대해 https://codegolf.stackexchange.com/ - 그래서 대신 내가라는 이름의 두 번째 지역 변수를 사용하는 것이 좋습니다 것입니다 index
(읽기 이해도를 극대화하기 위해 최소한의 런타임 비용으로도 언급합니다) :
var index = someArray.indexOf( 3 );
var value = index == -1 ? 0 : index;
하지만 동료 나 프로젝트 공동 작업자에게 잔인한 가학 주의자이기 때문에이 표현을 정말로 줄이고 싶다면 다음과 같은 4 가지 접근 방식을 사용할 수 있습니다.
1 : var
명령문의 임시 변수
var
명령문의 기능을 사용 index
하여 쉼표로 구분할 때 두 번째 임시 변수를 정의 (및 할당) 할 수 있습니다 .
var index = someArray.indexOf(3), value = index !== -1 ? index: 0;
2 : 자체 실행 익명 기능
또 다른 옵션은 자체 실행 익명 함수입니다.
// Traditional syntax:
var value = function( x ) { return x !== -1 ? x : 0 }( someArray.indexOf(3) );
// ES6 syntax:
var value = ( x => x !== -1 ? x : 0 )( someArray.indexOf(3) );
3 : 쉼표 연산자
JavaScript가 지원하는 악명 높은 "쉼표 연산자"도 있으며 C 및 C ++에도 있습니다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
단일식이 필요한 위치에 여러 식을 포함하려는 경우 쉼표 연산자를 사용할 수 있습니다.
이를 사용하여 부작용을 도입 할 수 있습니다.이 경우 다음을 다시 할당하면됩니다 value
.
var value = ( value = someArray.indexOf(3), value !== -1 ? value : 0 );
이 작품 때문에 var value
(그것이 문이다로) 먼저 해석하고, 그 다음 가장 왼쪽에, 가장 안쪽 value
할당 한 다음 쉼표 연산자의 오른쪽, 다음 삼항 연산자 - 모든 법적 자바 스크립트.
4 : 하위 표현식에서 재 할당
해설자 @IllusiveBrian은 할당 value
이 괄호로 묶인 하위 표현식으로 사용되는 경우 쉼표 연산자 (이전 예에서)의 사용이 필요하지 않다고 지적했습니다 .
var value = ( ( value = someArray.indexOf(3) ) !== -1 ? value : 0 );
논리식에서 음수를 사용하는 것은 사람이 따라 가기가 더 어려울 수 있습니다. 따라서 위의 모든 예제는 다음으로 변경 idx !== -1 ? x : y
하여 읽기를 단순화 할 수 있습니다 idx == -1 ? y : x
.
var value = ( ( value = someArray.indexOf(3) ) == -1 ? 0 : value );
if
아닌if/else