2013-05-24 3 views
0

나는 확실하지 않기 때문에 이것에 대해 스택 오버플로에 대한 답변을 찾을 수 없습니다.정확히 무엇을 자바 스크립트에서 (변수를 할당) 의미

이 정확히 무엇을 의미 :

variable = variable || {} 

또는 뭔가를 그 :

this.pointX = options.pointX || 6; 

나는 그것이 variable에 할당하는 것이 이해할 variable 변수가 존재하지 않는 경우는 또는 empty Object 존재하지만 만약 왜 그거야?

||은 '또는'을 의미하지 않습니까?

+1

이것은 기본적으로 "널 병합"이고 당신이 그것에 대해 더 여기에서 찾을 수 있습니다 http://stackoverflow.com/questions/476436/null-coalescing-operator- for-javascript 및 여기 : http://stackoverflow.com/questions/6439579/what-does-var-foo-foo-mean-in-javascript/6439629 –

+0

참조 http://stackoverflow.com/a/6439629/643483 –

+0

@ 코리 말했듯이. 이 답변을 찾고 있었지만 찾을 수는 없습니다. 이제 나는 내 질문에 대한 많은 대답을 찾았다. – WooCaSh

답변

3

||의 값을 할당합니다.

var x = y || z; 

의미 : y는 "truthy"값으로 평가

경우, xy을 할당합니다.

y이 "위조 된"값으로 평가되는 경우 zx으로 지정하십시오.

"truthy/falsy"(또는 바로 google it)에 대한 자세한 내용은 http://11heavens.com/falsy-and-truthy-in-javascript을 참조하십시오.

-1
this.pointX = options.pointX || 6; 

수단은 this.pointXoptions.pointX의 값을 할당 가능한 경우 (즉. null가 아닌) 다른 효과적으로 SQL COALESCE 문 유사하게 동작 6

+0

pointX는 0 일 수 있지만 이는 사실이 아닙니다. . – DougM

+0

@DougM 그리고 빈 문자열, NaN, undefined가 될 수 있다는 것을 알게되었습니다. – WooCaSh

1

|| 연산자는 부울 (true 또는 false)이 아닌 "truthiness"값을 결정하는 실제 개체를 반환합니다. 일단 결과를 결정할 수 있으면 "단락"합니다. variabletrue truthiness의 값을 갖는 경우 (true는 아무것도 or ED되면 결과 true 때문에)

, 그것을 반환한다. 그렇지 않으면 두 번째 피연산자는 전체 표현식의 진실성을 결정하므로 (진리 값이 false 인 경우에도) 반환됩니다.

2

||or 연산자입니다.

기본적으로 variable이 정의되지 않은 경우 새 객체 리터럴에 variable이 할당됩니다.

https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators#Logical_operators

+0

'variable'은 정의되지 않은 경우뿐만 아니라 참값 값이 false 일 때마다 두 번째 피연산자에 할당됩니다. 예를 들어'var s = ""; s = s || "foo";는''foo ''가 이미 정의되어 있어도 s 값을 갖습니다. – jerry

-1

|| JavaScript의 연산자는 다른 언어와 다르다. JavaScript가 평가할 때 || 하나의 피연산자 또는 다른 피연산자를 반환하는 것으로 보입니다. 피연산자가 true로 평가되면 true로 평가하고 그렇지 않으면 false로 평가하는 일반적인 진리표 평가를 수행하지 않습니다.

1

||는 뜻인가 또는 여기 :

var x = 5 
var x = x || {} //If v is defined, v = v, else v = {} (new, empty, object). 
//x = 5 since x already was defined 

var y = y || {} 
//y = {} since y was undefined, the second part is run. 
관련 문제