2013-09-30 2 views
1

javascript를 사용하여 OS 버전을 감지하고 있습니다. 나는 자바에 대한 이해를 가지고 있지만 일부 자바 스크립트 구문은 아래이 같은 혼란 : return 문에 정확히 그들이 무엇을하고 있는지 : 우리는 콜론을 왜자바 스크립트의 새 기능

var os = (function() { 
     var ua = navigator.userAgent.toLowerCase(); 
     return { 
      isWin2K: /windows nt 5.0/.test(ua), 
      isXP: /windows nt 5.1/.test(ua), 
      isVista: /windows nt 6.0/.test(ua), 
      isWin7: /windows nt 6.1/.test(ua) 
     }; 
    }()); 

나는 확실하지 않다.

또한/및 텍스트 사이의 목적은 무엇입니까?

부울을 반환합니까? 또는 문자열? 또한

, 왜 우리는 결국

 }()); 

가 있나요?

난 그냥

} 

대신 통해 읽을 시간을 내 주셔서 감사 입력합니다. 나는이 코드가 나를 위해 일하는 것을 알고 있지만 왜 그 이유를 배우고 싶습니다.

감사합니다.

+1

단서 : 자바 스크립트 개체, 정규식, 즉각적인 함수. – PSL

답변

0

이 함수는 4 개의 속성 (isWin2K, isXP 등)을 가진 객체를 반환하며 각 객체는 부울 값을가집니다. 이처럼 사용할 수 있습니다

var a = { prop1 : val1, prop2 : val2 }; 

더 여기 읽기 :

if (os.isXP) { 
    // Windows XP specific code 
} 

콜론은 객체 리터럴을 선언하는 구문의 일부입니다 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals

문자열처럼 보이는 것은 '또는'대신 '또는'대신 '또는'을 리터럴 정규식이라고합니다.

자세히 알아보기 : https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions

마지막으로 유효한 모든 코드가 IIFE (Immediately Invoked Functional Expression)로 래핑됩니다. 변수를 사용하여 범위 (일반적으로 전역 범위)의 오염을 방지하기 위해 JavaScript에서 사용되는 일반적인 구조입니다. 곧 배우게 될 JavaScript는 함수 범위를 가지고 있으므로 일부 변수를 분리하여 "로컬"변수로 만들려면 함수에 래핑해야합니다. 인생은 그냥 않지만, 즉시이라고, 그래서 지침은 단지 래퍼 함수가 존재하지 않은 경우처럼, 그 자리에서 실행됩니다

var b = 10; 
a = b + 5; 

(function() { 
var b = 10; 
a = b + 5; 
})(); 

에 해당 두 번째 해결 방법은 바깥 쪽 범위에 b 변수를 도입하지 않습니다.

더 여기 읽기 : 우리는 콜론을 왜 http://en.wikipedia.org/wiki/Immediately-invoked_function_expression

3

나는 확실하지 않다 : return 문

에서 return 문의 오른쪽이 an object literal입니다.콜론은 속성 이름 (왼쪽)과 값 (오른쪽)을 구분합니다.

또한/및 텍스트 사이의 목적은 무엇입니까?

이들은 regular expression literals입니다.

부울을 반환합니까? 또는 문자열?

개체를 반환하지 않습니다.

또한, 우리는 왜이가 즉시 호출 기능입니다 }()

않아도됩니다. os은 함수 자체가 아닌 함수의 반환 값입니다.

이 예제에서는 ua 변수를 로컬 범위에서 사용할 수 있습니다.

+0

"객체 리터럴"이라는 용어를 소개해 주셔서 감사합니다. 도와 주셔서 감사합니다. – Bilal

0

나는 왜 콜론을 가지고 있는지 확실하지 않습니다. return 문과 정확히 무엇을하고 있는지.

주어진 코드에서 return {r:val}은 실제로 개체를 반환합니다. 자바 스크립트 그래서 코드의 다음 부분

var obj = new Object(); 
obj.r = 'some value'; 
obj.t = 'some other value'; 

: 위 예에서 설명한 바와 같이

return { 
      isWin2K: /windows nt 5.0/.test(ua), 
      isXP: /windows nt 5.1/.test(ua), 
      isVista: /windows nt 6.0/.test(ua), 
      isWin7: /windows nt 6.1/.test(ua) 
     }; 

실제 객체를 반환

var obj = { 
    r: 'some value', 
    t: 'some other value' 
}; 

는 기능적으로 동일하다. return {r:val}return obj으로 바꿉시다. 따라서 주어진 함수의 형식은 다음과 같습니다.

var os = (function() 
        { 
         return obj 
        }()); 

이제 자바 스크립트 기능에 대해 조금 배우십시오. This page 당신에게 자바 스크립트 기능에 대한 아주 좋은 통찰력을 줄 것이다.

+0

감사합니다. 저는 그 진술서에 4 개의 불린을 돌려주고 있다고 믿습니다. – Bilal

+0

네 개의 부울! 아니, 네 개 필드가있는 물건을 돌려 주겠다. 예제를 다시 읽으십시오. – Sage

관련 문제