2013-11-25 3 views
4

이것은 아주 간단한 질문이어야합니다. 나는 어디서나 답을 찾을 수 없었습니다. 그래서 나는 시간을 좀 구해서 여기 묻습니다.Javascript && 연산자는 if 문과 동일합니까?

좀 자바 스크립트 코드를 찾아 형태의 표현을 발견했다 : 다른 수학 문장 그냥 변수와 간단한 물건 할당하는

a < b && (other maths statements); 

.

내 질문은 여기 있습니다. 이것은 compact if 문을 작성하는 또 다른 방법입니까?

나는 그 진술을 알고 있는가? if-block : else-block; 그것을 할 수있는 방법 중 하나입니다. 그러나 & &은 단락 회로이고 왼쪽 연관성입니다. 이것이 제가 생각할 수있는 전부입니다. 나는이 방법으로 다른 블록을 가질 수는 없지만 꽤 깔끔하다는 것을 알고있다.

아침에이 시간에 깨어 났는지 누군가가 확인할 수 있습니까?

감사합니다,

+0

이것은 '참'또는 '거짓'을 반환하는 부울 표현식입니다. if 문에서 사용할 수 있습니다. 하지만'if (a && b)'나 변수에 대한 어떤 별칭도없이 ... 아무것도하지 않습니다. – Igle

+0

그냥 해내 지 마십시오. 가독성/유지 관리 가능성은 "이봐, 한 줄에 똑같은 글을 썼는데 이거 멋지지 않니?"라고 말하는 것보다 더 중요합니다. 이것이 약간의 학업 목적을위한 것이라면, 그것은 다른 것입니다. – SuperSaiyan

+2

예, 단락 회로 평가로 생각한대로 작동합니다. 아니요, 'if (...)'를 쓰는 것보다 반드시 좋은 것은 아닙니다. 단지 이런 질문을하기 때문입니다. – deceze

답변

7

예, 당신은을 할 수 있습니다. ab보다 작 으면 다른 명령문이 실행됩니다.

즉, 이 아니어야한다고 말했습니다. 적은 양의 타이핑을 저장하는 대신, 더 쉽게 읽을 수있는 코드를 사용하여 그 목적이 즉시 명백해야합니다. 코드를 읽거나 수정해야하는 다른 프로그래머도 오해의 여지가 없는지 확인해야하는 경우 동일한 문제가 발생할 수 있습니다.

여러 할당을 시도하는 경우에도 이와 같은 함정이 있지만 중간 할당 중 하나는 "거짓"값입니다. 이 예를 생각해

a < b && (a = 1) && (b = 0) && (c = 3); 

기본적으로 a 경우, b 미만을 설정 ab 0과 c 그러나 3으로, 1, 거짓 (b = 0) 반환 (부울로 변환하면 0이 false로 간주됩니다) 따라서 (c = 3) 부분은 절대 실행되지 않습니다. 분명히 그 기본 예제로 JavaScript에 대해 충분히 알고있는 사람이라면 누구나 실패 할 것입니다.하지만 a, bc의 값이 다른 곳에서 왔을 경우에는 항상 작동하지 않을 것이라는 표시는 없습니다.

자바 스크립트 :

var el = document.getElementById('test'), 
a = 1, 
b = 0; 

a>b && (el.innerHTML = "True") || (el.innerHTML = "False"); 

HTML : 내 생각에 덜 읽을 수 비록

+0

많이 생각했습니다. 나는 오늘 아침에 내가 배웠던 코드를 이해하려고 노력했다. if-block : else-block 메서드를 사용하여 하나의 라인에서 처리하고 싶었지만, 이것은 사물을 보는 재미있는 방법입니다. 나는 네가 맘에 드는 것을 좋아한다. (그렇지만 네가 맞다. 프로그래밍에 대한 기본적인 이해를 가진 대부분의 사람들은 그것을 깨달아야한다.) – Blue42

+1

그 경우에는, 당신은'a

1

당신은, 짧은 코드의 경우-else 문이 유형을 사용할 수 있습니다

<div id="test"></div> 

An example jsFiddle

연산자를보다 큼에서 작음으로 전환하면 "테스트"DIV 내부에 "거짓"이 인쇄됩니다.

+1

단일 대입 연산의 경우 삼항 연산자를 사용하는 것이 더 합리적입니다 :'el.innerHTML = (a> b? "True": "False");'. 당신의 예제는 실제 삼항 연산자가 부족하지만 자바 스크립트와 같은 동적 유형 지정과 암시적인 부울 변환을하는 Lua와 같은 언어에서 어떻게 수행 할 것인가에 가깝습니다. –

+0

동의합니다. 삼항 연산자는 단순화 된 if-else 문에 대한 더 좋은 예입니다. 특히 단일 할당의 단순한 경우에 특히 그렇습니다. 우리가 우리의 대답에서 말했듯이 두 예제 모두 읽기가 쉽지 않아 코드를 이해하기 어렵게 만듭니다. – Trendy

+0

맞습니다. 가독성이 중요합니다! 삼항 연산자는 이해하기 쉽지만 대부분의 사람들은 한 지점이나 다른 지점에서 만나야합니다. 내가 제안한 방법은 저에게 소설이기 때문에 답변 해 주셔서 감사합니다 =) – Blue42