2009-05-06 3 views
6
Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4; 

|| 이 경우에는?
Attacklab.wmd_env.buttons 인 배열에 _4를 추가합니까?|| 연산자합니까?

+4

제목을 수정하십시오. – rkb

+4

와우, 제목을 얻기 위해 7 번의 시도가있었습니다 ... – Pool

답변

18

JavaScript의 연산자는 해당 값이 false으로 평가되지 않으면 왼쪽에있는 값을 반환하고, 그렇지 않으면 오른쪽에있는 값을 반환합니다. Mozilla's Core JavaScript 1.5 Reference에서

:

expr1 || expr2
반환 expr1 true로 변환 될 수 있으면; 그렇지 않으면 expr2을 반환합니다. 따라서 부울 값과 함께 사용하면 ||은 피연산자 중 하나가 true이면 true를 반환하고 그렇지 않으면 false를 반환합니다. 둘 다 false이면 false를 반환합니다. Attacklab.wmd_env.buttons에 값이없는 경우

그래서,이 경우, 그것은 _4에 값을 설정합니다.

+0

MDC가 모호한 표현을 사용하는 것은 이상합니다. "** ** 사실로 변환 될 수 있다면 ** expr1을 반환합니다." 실제로 "변환 될 수있는"것에 관한 것이 아니라 값 표현식이 반환하는 것입니다. – kangax

8

Attacklab.wmd_env.buttonsnull 또는 undefined 인 경우 기본값은 _4으로 설정됩니다.

12

그것은 기본값을 제공 좋다

if(!Attacklab.wmd_env.buttons) 
    Attacklab.wmd_env.buttons = _4; 

를 작성하는 멋진 방법입니다. nullundefined은 조건부를 트리거 할뿐만 아니라 0, false''입니다. 즉, 부울 컨텍스트에서 false으로 간주되는 모든 것입니다.

+0

어떤 값이 거짓으로 평가되는지 명시 적으로 나열하기위한 +1 –

+0

물론, 'NaN';) – kangax

+0

@kangax : 예, 목록에 누락 된 유일한 것입니다 (ECMA-262, 9.2 절 참조) – Christoph

4

|| 연산자는 표현식의 왼쪽에 제공된 값이 (부울 컨텍스트에서) 거짓인지 여부를 확인합니다. 그렇다면 식의 오른쪽에 표시된 대체 값을 반환합니다. 그렇지 않으면 원래 값을 반환합니다. null의 경우

그래서 예를 들어, 다음 코드는 기본 값으로 '푸'를 설정합니다 :

 
Foo = Foo || "Default Value" 

이 때로는 합체 연산자라고합니다. Ruby 및 Perl과 같은 다른 언어에서도 지원됩니다. C#은 ?? 같은 일을하는 연산자.

+0

이 답변은 그가 무엇을 부르고 다른 언어 학자들이 그것을 사용하는지, 심지어 C#의 다른 구문을 알고 있습니다. 그리고 그는 여전히 그것이 무엇을하는지 모릅니다. – Beska

+0

좋은 지적은 아마 코멘트를 남겨 두었어야했을 것입니다. 어쨌든 내 대답이 업데이트되었습니다. 올바른 이름은 –

+0

+1입니다! 다른 SO 질문/대답은 그것을주고 싶어하는 것 같지 않았습니다 ... Xquery에서 해당 항목을 찾을 수있게 도와 줬습니다. (호기심을 가진 사람은 $ foo : = ($ foo, "default value") [1]라고합니다. –