일반적으로 브라우저간에 Javas cript 기능을 작성하는 방법 중 어떤 것이 더 좋은 성능을 발휘합니까?방법 1 방법 2 편집 : 지금까지의 훌륭한 답변에 찬성표를 던집니다.
함수를 보다 정확한 구문으로 수정하였습니다.
지금까지의 답변에 대한 몇 가지 요점 – 많은 경우 상당히 무의미한 성능향상이지만 여전히 코드 분석에 시간을 할애하려는 몇 가지 이유가 있습니다.
실행해 주세요.느린 컴퓨터, 모바일 기기, 오래된 브라우저 등 호기심 같은 것을, 사용 성능에 대한 일반 교장의 다른 시나리오를 강화하십시오.IF 문의 평가는 조금 시간이 걸립니다.
이 작업을 10000000000000번 하지 않는한 중요하지 않습니다.
귀하 및/또는 귀하의 조직이 읽기 쉽고 유지보수가 쉬운 것으로 이동하십시오. 깨끗하고 단순한 코드 생성을 통해 얻을 수 있는 생산성 향상은 JS 실행 시간을 10분의 1초 단축하는 것보다 훨씬 중요합니다.
코드를 만들고 허용할 수 없을 정도로 느릴 때만 어떤 것이 잘 실행되는지 생각해 보기 시작해야 합니다.
그런 다음 병목현상을 추적하기 시작해야 합니다.
이것은 결코 이러한 것이 아닙니다.
여기서 하나에서 다른 것으로 전환해서 측정 가능한 성능 향상을 얻지는 못할 것입니다.
엄밀히 말하면 if문은 함수가 실행될 때마다 실행되는 것이 아니라 1번만 실행되기 때문에 두 번째 것이 더 좋은 성능을 발휘한다고 말하고 싶습니다.
그러나 그 차이는 무의미할 것이다.
이러한 단일 if문의 성능 패널티는 단순히 함수를 호출하는 성능 패널티와 비교해도 미미합니다.
백만번을 불러도 작은 차이겠지.첫 번째는 조건에 따라서 같은 기능을 두 번 정의하고 두 가지 버전에서 다르게 동작하는 부자연스러움이 없기 때문에 이해하기 쉽습니다.
그것은 훗날 혼란을 야기할 수 있는 가능성이 있는 방법이라고 생각합니다.
이 최적화에 대해 정말 미친 사람이 아니라면 코드의 가독성으로 더 많은 이점을 얻을 수 있다고 말한 사람은 저는 처음이 아닙니다.
안타깝게도 위의 function은 다른 브라우저에 없는 mozilla quirk에 의존하기 때문에 실제로 크로스 브라우저 친화적이고 function.mozilla에 구축되어 있지 않은 다른 브라우저에서 위의 코드는 항상 두 번째 함수 정의를 사용합니다.
여기서 이걸 보여주기 위해서 간단한 테스트 케이스를 만들었어요.기본적으로 ECMAScript 사양은 함수 문장이 var 선언과 유사하게 처리된다고 합니다.
그것들은 모두 현재 실행 범위의 최상부에 호이스트됩니다(예:<Script>태그의 개시, 함수의 개시, 또는 평가 블록의 개시).
olliej의 답변을 명확하게 하기 위한 두 번째 방법은 기술적으로 구문 오류입니다.
다음과 같이 다시 작성할 수 있습니다.
적어도 구문은 MyFunction은 해당 범위에서만 사용할 수 있습니다.
(var MyFunction;을 생략하고 전역에 대해 window.MyFunction=function()을 사용하는 것이 좋습니다.
)
조건은 모든 호출이 아닌 한 번만 평가되기 때문에 일반적으로는 두 번째 버전을 선호하지만 가독성을 방해하기 때문에 실제 실행이 안 되는 경우가 있습니다.
Btw 이거는?: 연산자를 사용하고자 하는 경우입니다.
예: (프로덕션코드에서 가져오기):
단순화된 예의 경우 브라우저 속성 확인을 한 번만 수행해야 한다고 가정하고 아래 작업을 수행합니다.
성능은 거의 동일해야 합니다!
브라우저 호환성 문제를 제거하기 위해 JQuery와 동일한 프레임워크를 사용할 것!
성능이 주요 목표라면 Slick Speed를 참조하십시오!
다양한 JavaScript 프레임워크를 벤치마킹할 페이지입니다.