2017-04-05 1 views
-5

나는 "Y 및 Z X 경우, 또는 경우"로 말할 수있는 무엇인가를 코딩하기 위해 노력하고있어하지만 내가 실수JavaScript에서 "if X or If Y and Z"를 어떻게 코딩합니까?

I 코드 중복을 피하기 위해이 테스트를 할 필요가
if((machine.isUsed == false) || (if(this.whoUseIt.includes(Session.get("loggedUser")))&&(machine.isUsed))){ 

을 만든 것 같습니다. 당신이 더 좋은 생각을 가지고 있다면 나는 아직도 그것에 열중하고 있습니다.

+3

거의 모든 언어에서이 형식을 취할 것입니다. if (x || (y && z)) {'저는 자바 스크립트를 사용하지 않지만 그렇게한다고 가정합니다. 중간에 여분의'if'를 제거해보십시오. –

+0

@AlbertRenshaw 당신 말이 맞아요, 당신은 첫 번째 대답이었습니다. 그렇다면 내가 왜 그렇게 많은 표를 얻었습니까? – Jerome

+1

@Jerome "downvote"를 무시하십시오. 관련되고 의미있는 설명없이 "downvote"가 질문에 추가하는 것은 무엇입니까? 중요한 부분은 귀하의 질문에 대한 답변을 얻는 것입니다. – guest271314

답변

2

!보다는 == false를 사용하고 여분의 괄호를 제거 :

if (!machine.isUsed || (this.whoUseIt.includes(Session.get("loggedUser")) && machine.isUsed)) { 

그러나 not A or (B and A)not A or B로 단순화 할 수있다 :

기계가 사용되지 않았거나 사용중인 사용자 인 경우 다음과 같이 표시됩니다.

+0

안녕하세요, 'this.whoUseIt.includes (Session.get ("loggedUser"))를 테스트하기 위해 단순화 할 수 없습니다.'machine.isUsed'가 true이어야합니다. – Jerome

+3

'machine.isUsed'가 true이면' ! machine.isUsed'가 false이고'this.whoUseIt.includes (Session.get ("loggedUser"))'의 값이 필요합니다. 'machine.isUsed'가 true인지 테스트하는 것은 이미 false가 아니라고 테스트했다면 중복됩니다. –

+0

@Jerome [단락 회로 평가] (http://stackoverflow.com/a/9344369/1270789)는'isUsed'가 false 인 경우 두 번째 표현식이 호출되지 않도록합니다. –

0

제거 if() 조건 if

if (machine.isUsed == false 
    || this.whoUseIt.includes(Session.get("loggedUser")) 
    && machine.isUsed) {} 
+1

제발 괄호로 묶으십시오. 하나는 멈추고'||'와'&&'중 우선 순위가 더 높은 것을 생각해야한다. 또한'! machine.isUsed'가 더 좋을 것입니다. –

+0

@ KenY-N 대괄호는 필요하지 않습니다. "더 나은"의미가 무엇인지 확신 할 수 없습니까? – guest271314

+0

@ KenY-N, 왜'||'또는'&&'중 우선 순위가 있다고 생각합니까? 덧셈보다 우선 순위가있는 곱셈만큼이나 논리적입니다. – trincot

0
if(x || (Y && Z)){...} 

괜찮을 것이다.

내부에있는 경우 다른 것을 추가 할 필요가 없습니다.

0

If X or if Y AND Z =>If (X || (Y && Z))

if(
    (machine.isUsed == false) || 
    (this.whoUseIt.includes(Session.get("loggedUser")) && (machine.isUsed)) 
) 
0
if(X || (Y && Z)){ 
    /* your logic 
} 
+0

이 코드는 문제를 해결할 수 있지만 문제가 해결되는 이유와 방법을 설명하는 설명을 항상 추가해야합니다. – BDL