"기타"가없는 JavaScript의 3 진 연산자
나는 항상 null
아무것도없는 조건 을 넣어야한다 . 어느쪽에 있습니까? 예 :
condition ? x = true : null;
기본적으로 할 수있는 방법이 있습니까?
condition ? x = true;
이제 구문 오류로 표시됩니다.
참고로 다음은 실제 예제 코드입니다.
!defaults.slideshowWidth ? defaults.slideshowWidth = obj.find('img').width()+'px' : null;
우선, 삼항 용도는 if / else 구문을 대체하지 않습니다 . 이는 값 을 리턴 하는 if / else 구문과 가능 합니다. 즉, if / else 절은 코드이고 삼항 시작은 표현 값을 리턴합니다.
이 여러 가지를 의미합니다.
- 에 필요한
=
반환 값이 할당 될 변수가있는 경우에만 삼항식을 사용 합니다. - 반환 된 값이 두 값 중 하나 일 경우 삼항 식만 사용하십시오 (또는 경우에 중첩 식 사용).
- (? 이후 :)은 부작용없이 값을 리턴해야합니다 (
x = true
모든 리턴 값을 리턴하고 리턴 해야 우리합니다. 변경 은 진정한 리턴을주지 않고 X는 리턴 된 값에 영향을줍니다)
간단히 말해서 삼항식의 '올바른'사용은
var resultofexpression = conditionasboolean ? truepart: falsepart;
삼항식을 condition ? x=true : null ;
사용하여의 값을 설정하는 예제 대신 다음을 사용할 x
수 있습니다.
condition && (x = true);
이것은 여전히 표현식 유효성 검사를 통과하지 더 나은 접근 방식은
void(condition && x = true);
마지막은 유효성 검사를 통과합니다.
그러나 다시 예상 값이 부울 인 경우 조건의 결과 만 사용하십시오.
var x = (condition); // var x = (foo == "bar");
업데이트 된 샘플과 관련하여 아마도 더 적합 할 것을 구석으로합니다.
defaults.slideshowWidth = defaults.slideshowWidth || obj.find('img').width()+'px';
아니요, 세 개의 피연산자가 필요합니다. 이것이 그들이 삼항 연산자 라고 불리는 이유 입니다.
그러나 당신은 당신의 모범으로 가지고있는 것을 위해, 당신은 당신이 할 수 있습니다 :
if(condition) x = true;
나중에 둘 이상의 명령문을 추가해야하는 경우 중괄호를 사용하는 것이 더 안전하지만
if(condition) { x = true; }
편집 : 이제 질문이 적용되는 실제 코드를 언급했습니다.
if(!defaults.slideshowWidth)
{ defaults.slideshowWidth = obj.find('img').width()+'px'; }
var x = condition || null;
더 자주 사람들은 논리 구문을 사용하여 명령문 구문을 단축합니다.
!defaults.slideshowWidth &&
(defaults.slideshowWidth = obj.find('img').width()+'px');
그러나 특별한 경우 구문이 더 간단 할 수 있습니다.
defaults.slideshowWidth = defaults.slideshowWidth || obj.find('img').width()+'px';
이 코드는 값 이 로 평가 진정한 defaults.slideshowWidth
되면 값 을 반환하고 반환합니다.defaults.slideshowWidth
obj.find('img').width()+'px'
자세한 내용 은 논리 연산자의 단락 평가 를 참조하십시오.
당신은 쓸 수 있습니다
x = condition ? true : x;
x는 수정되지 않습니다.
이것은 다음과 가변적입니다.
if (condition) x = true
편집하다 :
!defaults.slideshowWidth
? defaults.slideshowWidth = obj.find('img').width()+'px'
: null
몇 가지 대안이 있습니다-나는 더 낫거나 나쁘다는 것을 말하는 것이 아닙니다.
세 번째 응답 매개 변수로 null을 전달하면 값이 null이기 때문입니다. 리팩토링하고 조건을 변경하면 더 이상 사실이 아닐 위험이 있습니다. 이에 대한 삼항 가드에서 두 번째 선택으로 값을 전달합니다.
!defaults.slideshowWidth =
? defaults.slideshowWidth = obj.find('img').width()+'px'
: defaults.slideshowwidth
더 안전하지만보기에는 좋지 않을 수 있습니다. 실제로 나는 아마도
defaults.slideshowWidth = defaults.slideshowWidth
|| obj.find('img').width()+'px'
귀하의 경우에는 삼항 연산자가 있다고 생각합니다. ||, && 연산자를 사용하여 변수를 사용할 수 있습니다. 직접 할당 할 수 있습니다.
!defaults.slideshowWidth ? defaults.slideshowWidth = obj.find('img').width()+'px' : null ;
될 것입니다 :
defaults.slideshowWidth = defaults.slideshowWidth || obj.find('img').width()+'px';
더 명확하고 "자바 펼쳐"스타일입니다.
간단히
if (condition) { code if condition = true };
참고 URL : https://stackoverflow.com/questions/2932754/ternary-operators-in-javascript-without-an-else
'IT' 카테고리의 다른 글
일급 기능과 고차 기능의 차이점 (0) | 2020.07.13 |
---|---|
리디렉션 후 PHP 세션이 강화 됨 (0) | 2020.07.13 |
오픈 소스 프로젝트에서 / dist 디렉토리의 의미는 무엇입니까? (0) | 2020.07.13 |
express.js 서버에 SSL 인증서를 어떻게 설정합니까? (0) | 2020.07.13 |
의 개행 (0) | 2020.07.13 |