2013-11-23 3 views
14

나는 js를 배우고 있는데, 어떤 예를 들었습니까?왜 사용 하시겠습니까? || 변수 함수 선언에서?

var Triangulation = Triangulation || (function() { 
... 

이가 var에 이미 할당하기 전에 선언되었는지 여부를 확인하는 것을 나에게 보인다 함수로 VAR를 선언 할 때 사용된다. 웹을 둘러 보면서이 접근법을 사용하는 다른 예는 볼 수 없습니다. 무슨 일이 대이 접근을하는 이유가 될 것입니다 : 그것은 triangulation 변수가 이미 아직 인 경우는 triangulation 변수 반환 자체가 경우 정의되지 않음 정의 기회가 있다는 것을 의미

var Triangulation = function() { 
... 

감사

+4

아마도 한 번만 설정하는 방법일까요? – Sico

+0

이것을 확인하십시오 ... http : //stackoverflow.com/questions/2100758/javascript-or-variable-assignment-explanation – nik

+0

'var 삼각 측량 = 삼각 측량 || (function() {'은 단지 **이 단계로 가기 전에'Trianglulation'이 선언 된 후 그 단계를 건너 뛴다는 것을 의미합니다 ** ** else ** ** 함수 내에서 코드 실행을 계속 수행합니다. –

답변

19

- - 익명의 함수는 새로운 변수 triangulation의 값을 반환합니다.

그리고 중요한/민감한 것은 var입니다. 그것은 까다로운 사업입니다. 예를 들어

<script> 
var triangulation = function(){return(1);}; 
</script> 

사실 의미

<script> 
window.triangulation = function(){return(1);};// because "triangulation" is in global      
               // namespace and "var" in this case 
               // means nothing "local", as you may expect 
</script> 

다음번 초기화 var triangulation = ... 전역 변수 덮어.

var triangulation = triangulation || function(){...}; 
+7

이 패턴의 일반적인 사용법은 "네임 스페이스"를 만들 때입니다. 예를 들어, 다음과 같이 정의 할 수 있습니다 : $ = $ || {}; $ .app = $ .app || {}; $ .app.something = $ .app.something || {}; 그런 다음 모든 파일의 맨 위에 동일한 기본 사항을 포함하여 네임 스페이스가 정의되고 정의가 서로 충돌하지 않도록 할 수 있습니다. –

2

Triangulation이 그것을 Short-circuiting을 사용하여 새 값을 할당하기 전에 존재하는 경우가 확인 : 당신이 에게 그것을 유지하려면, 당신은 작성해야합니다. 이는 브라우저와 브라우저가 다른 기능을 지원하려는 경우 일반적으로 사용됩니다. 예 : requestAnimationFrame 모든 브라우저는 서로 다른 공급 업체 접두사를 필요로하므로 ||을 사용하여 모든 브라우저를 지원하도록 올바른 방법을 변수에 지정합니다.

window.requestAnimFrame = (function(){ 
    return window.requestAnimationFrame  || 
      window.webkitRequestAnimationFrame || 
      window.mozRequestAnimationFrame || 
      function(callback){ 
      window.setTimeout(callback, 1000/60); 
      }; 
})(); 

//whatever exists will be assigned to window.requestAnimFrame . 
1

이 종종 당신은 반드시 파일로드 순서를 알고 (또는 관리 할)하지 않는 자신의 구현은 여러 개의 파일 사이에 분할이 네임 스페이스 패키지에 사용됩니다. 일반적으로, 당신이 이런 짓을 했을까 : 귀하의 경우

var Namespace = Namespace || {} 

를가 이미 정의되어있는 경우 Triangulation 클래스를 재 할당 방지하기 위해 그냥.

2

|| 오퍼레이터는, JS 예를 들어 truthy 값
로 평가 첫번째 식의 값을 반환
|| B (가정 할 빈 문자열이고 B는 정수 (12) 임) 상기 식 (12)를 반환
(즉, 진리 값으로 평가되는 첫 번째 표현).

장면 전환기에서 Triangulation이 이미 선언되었는지 확인하고 함수 표현식을 계산하여 삼각 측량에 할당해야합니다.
var 삼각 측량 = 삼각 측량 || (함수() {

-1

우리가 & & (와 등 자바 스크립트에서 사용한 사업자) || (또는) 와! (안) 사업자의 몇 가지 종류가 있습니다. 이러한 연산자는 또한으로 알려져 있습니다

잠시, 또는 다른 제어 문이.

|| 연산자를 결정하는 데 사용됩니다, 경우 논리 연산자는.

논리 연산자는 주로 프로그램의 흐름을 제어하는 ​​데 사용됩니다 . 일반적으로, 당신은의 일부로 찾을 수

조건 중 하나가 true인지 여부.예 :

if (x == 5 || Y의 == 5) { .... ....}

감사합니다.

+0

은 질문과 관련이 없습니다. – oligofren

관련 문제