순환 은 매우 자주 사용 되 는 제어 구조 로 대부분의 것 은 그것 에 의 해 이 루어 져 야 한다.자바 스 크 립 트 에서 우 리 는 for(;)를 사용 할 수 있다.while(),for(in)세 가지 순환,사실상 이 세 가지 순환 중 for(in)의 효율 은 매우 떨어진다.왜냐하면 그 는 해시 키 를 조회 해 야 하기 때문에 가능 하 다 면 가능 한 한 적 게 사용 해 야 한다.for(;;)while 순환 의 성능 과 는 기본(평소 사용 시)등가 라 고 해 야 한다.실제로 이 두 순환 을 어떻게 사용 하 는 지 에 대해 서 는,많은 관심 이 있다.나 는 테스트 중 에 매우 재 미 있 는 상황 이 있 으 니 부록 을 보십시오.마지막 으로 얻 은 결론 은 순환 변수 가 증가 하거나 감소 하 는 경우 순환 변수 에 따로 값 을 부여 하지 말고 마지막 으로 읽 을 때 포 함 된+또는 조작 자 를 사용 해 야 한 다 는 것 이다.배열 의 길이 와 비교 하려 면 배열 의 length 속성 을 부분 변수 에 넣 고 조회 횟수 를 줄 여야 합 니 다.국부 변수 와 전역 변수 국부 변수의 속 도 는 전역 변수의 접근 속도 보다 빠르다.전역 변 수 는 사실 전역 대상 의 구성원 이 고 국부 변 수 는 함수 의 창고 에 놓 여 있 기 때문이다.Eval 을 사용 하지 않 고 eval 을 사용 하 는 것 은 실행 할 때 해석 엔진 을 다시 호출 하여 내용 을 실행 하 는 것 과 같 으 며 많은 시간 을 소모 하 는 것 과 같다.이때 자 바스 크 립 트 가 지원 하 는 패 키 지 를 사용 하면 함수 모드(패 키 지 를 닫 는 내용 은 함수 식 프로 그래 밍 과 관련 된 내용 을 참고 하 십시오)를 실현 할 수 있 습 니 다.대상 을 줄 이 고 자 바스 크 립 트 의 해석 성 때문에 a.b.c.d.e 를 찾 으 려 면 최소 4 번 의 조회 작업 이 필요 합 니 다.먼저 a 를 검사 한 다음 에 a 중의 b 를 검사 하고 b 중의 c 를 검사 합 니 다.이렇게 내 려 갑 니 다.따라서 이러한 표현 식 이 반복 되면 가능 하 다 면 이러한 표현 식 이 최소 화 되 어야 합 니 다.부분 변 수 를 이용 하여 임시 적 인 곳 에 넣 어 조회 할 수 있 습 니 다.이 점 은 순환 과 결합 할 수 있 습 니 다.우 리 는 항상 문자열,배열 의 길이 에 따라 순환 해 야 하기 때문에 보통 이 길 이 는 변 하지 않 습 니 다.예 를 들 어 a.length 를 조회 할 때마다 하나의 조작 을 추가 로 해 야 합 니 다.그리고 var len=a.length 를 미리 조회 하면 한 번 의 조회 가 빠 집 니 다.문자열 연결 이 추가 문자열 이 라면 s=s+anotherStr 대신 s=s+anotherStr 를 사용 하 는 것 이 좋 습 니 다.여러 문자열 을 연결 하려 면 s+=a 와 같은+=을 적 게 사용 해 야 합 니 다.s+=b;s+=c; s+=a+b+c 로 써 야 합 니 다.같은 문자열 을 여러 번+=작업 하 는 등 문자열 을 수집 하 는 경우 캐 시 를 사용 하 는 것 이 좋 습 니 다.어떻게 쓰 지?JavaScript 배열 을 사용 하여 수집 하고 마지막 으로 join 방법 으로 연결 합 니 다.다음 var buf=new Array();for(var i = 0; i < 100; i++){ buf.push(i.toString());}var all = buf.join(""); 형식 변환 형식 변환 은 여러분 이 자주 저 지 르 는 오류 입 니 다.자바 스 크 립 트 는 동적 형식 언어 이기 때문에 변수의 유형 을 지정 할 수 없습니다.1.숫자 를 문자열 로 바 꾸 고"+1"을 적용 합 니 다.보기 에는 좀 못 생 겼 지만 사실 이 효율 이 가장 높 습 니 다.성능 상 으로 는("+)>String()>.toString()>new String()은 아래 의"직접 양"과 유사 합 니 다.가능 한 한 컴 파일 을 사용 할 때 사용 할 수 있 는 내부 작업 은 실행 할 때 사용 하 는 사용자 작업 보다 빠르다.String()은 내부 함수 에 속 하기 때문에 속도 가 빠 릅 니 다.toString()은 원형 에 있 는 함 수 를 조회 해 야 하기 때문에 속도 가 조금 떨 어 집 니 다.new String()은 정확 한 복사 본 을 되 돌려 주 는 데 사 용 됩 니 다.2.부동 소수점 을 정형 으로 바 꾸 는 것 은 오류 가 발생 하기 쉽 습 니 다.많은 사람들 이 parseInt()을 사용 하 는 것 을 좋아 합 니 다.사실 parseInt()는 부동 소수점 과 정형 간 의 변환 이 아니 라 문자열 을 숫자 로 바 꾸 는 데 사 용 됩 니 다.우 리 는 Math.floor()또는 Math.round()를 사용 해 야 합 니 다.또 2 절 대상 검색 에서 의 문제 와 달리 Math 는 내부 대상 이기 때문에 Math.floor()는 사실 검색 방법 과 호출 시간 이 별로 없고 속도 가 가장 빠르다.3.사용자 정의 대상 에 대해 서 는 toString()방법 을 정의 하여 형식 전환 을 한다 면 toString()을 명시 적 으로 호출 하 는 것 을 추천 합 니 다.내부 작업 은 모든 가능성 을 시도 한 후에 대상 의 toString()방법 을 시도 하여 String 으로 전환 할 수 있 는 지 를 시도 하기 때문에 이 방법 을 직접 호출 하 는 것 이 효율 적 입 니 다.직접 양 을 사용 하 는 것 은 사실 이 영향 이 비교적 작 기 때문에 무시 할 수 있다.예 를 들 어 자바 스 크 립 트 는[param,param,param,...]을 사용 하여 하나의 배열 을 직접 표현 하 는 것 을 지원 합 니 다.예전 에 우 리 는 모두 new Array(param,param,...)를 사 용 했 습 니 다.전 자 는 엔진 으로 직접 설명 하고 후 자 는 Array 내부 구조 기 를 호출 해 야 하기 때문에 조금 빨리 해 야 합 니 다.마찬가지 로 var foo={}의 방식 도 var foo=new Object()보다 낫다.빨리,var reg=/../;var reg=new RegExp()보다 빠르다.문자열 을 옮 겨 다 니 며 문자열 을 순환 합 니 다.예 를 들 어 교체,찾기 등 은 정규 표현 식 을 사용 해 야 합 니 다.자바 스 크 립 트 의 순환 속도 가 느 리 고 정규 표현 식 은 C 로 작 성 된 언어의 API 로 성능 이 좋 습 니 다.고급 대상 사용자 정의 고급 대상 과 Date,RegExp 대상 은 구조 할 때 많은 시간 을 소모 합 니 다.재 활용 이 가능 하 다 면 캐 시 방식 을 사용 해 야 합 니 다.DOM 관련 HTML 삽입 많은 사람들 이 자 바스 크 립 트 에서 document.write 를 사용 하여 페이지 에 내용 을 만 드 는 것 을 좋아한다.사실 이러한 효율 이 비교적 낮 습 니 다.HTML 을 직접 삽입 해 야 한다 면 div 나 span 을 지정 하고 그들의 innerHTML 을 설정 하여 자신의 HTML 코드 를 페이지 에 삽입 할 수 있 습 니 다.대상 조 회 는["]조 회 를 사용 하 는 것 이.items()보다 빠 릅 니 다.이것 은 앞의 감소 대상 이 찾 는 방향 과 같 습 니 다.호출.items()는 조회 와 함수 호출 을 한 번 증가 시 켰 습 니 다.DOM 노드 를 만 드 는 데 보통 우 리 는 문자열 로 HTML 을 직접 써 서 노드 를 만 들 수 있 습 니 다.사실 이렇게 하면 코드 의 유효성 문자열 의 작업 효율 이 낮 기 때문에 document.createElement()방법 을 사용 해 야 합 니 다.문서 에 기 존의 모델 노드 가 존재 한다 면 cloneNode()방법 을 사용 해 야 합 니 다.createElement()방법 을 사용 한 후에 여러 번 요소 의 속성 을 설정 해 야 하기 때문에 cloneNode()를 사용 하면 속성의 설정 횟수 를 줄 일 수 있 습 니 다.마찬가지 로 많은 요 소 를 만 들 려 면 먼저 모델 노드 를 준비 해 야 합 니 다.타이머 가 계속 실행 되 는 코드 를 겨냥 하고 있다 면 setTimeout 을 사용 하지 말고 setInterval 을 사용 해 야 합 니 다.setTimeout 은 매번 타 이 머 를 다시 설정 해 야 합 니 다.다른 스 크 립 트 엔진 은 내 가 테스트 한 Microsoft 의 JScript 의 효율 이 Mozilla 의 Spidermonkey 보다 훨씬 떨어진다.실행 속도 든 메모리 관리 든 JScript 는 현재 기본적으로 업데이트 되 지 않 기 때문이다.그러나 SpiderMonkey 는 ActiveXObject 파일 을 사용 하여 파일 최 적 화 를 할 수 없 는 것 도 효과 적 인 수단 입 니 다.모든 빈 칸 과 주석 을 삭제 하고 코드 를 한 줄 에 넣 으 면 다운로드 속 도 를 가속 화 할 수 있 습 니 다.주의 하 세 요.해석 속도 가 아니 라 다운로드 속도 입 니 다.로 컬 이 라면 설명 과 빈 칸 은 해석 과 실행 속도 에 영향 을 주지 않 습 니 다.본 고 는 제 가 자 바스 크 립 트 프로 그래 밍 에서 찾 은 자 바스 크 립 트 의 운행 성능 을 향상 시 키 는 몇 가지 방법 을 총 결 했 습 니 다.사실은 이런 경험 들 은 모두 몇 가지 원칙 을 바탕 으로 합 니 다.즉,이미 만들어 진 것 을 직접 가 지 는 것 이 비교적 빠 릅 니 다.예 를 들 어 국부 변 수 는 전체 변수 보다 빠 르 고 직접 양 이 운행 할 때 대상 을 구성 하 는 것 보다 빠 릅 니 다.가능 한 한 실행 횟수 를 적 게 줄 이 세 요.예 를 들 어 캐 시 는 여러 번 조회 해 야 합 니 다.가능 한 한 직렬 링크 와 같은 언어 내 장 된 기능 을 사용 하 세 요.가능 한 한 시스템 이 제공 하 는 API 를 사용 합 니 다.이 API 들 은 컴 파일 된 바 이 너 리 코드 이기 때문에 실행 효율 이 높 은 동시에 일부 기본 적 인 알고리즘 상의 최적화 도 자바 script 에 사용 할 수 있 습 니 다.예 를 들 어 연산 구조의 조정 등 은 더 이상 언급 하지 않 습 니 다.그러나 자 바스 크 립 트 는 해석 형 이기 때문에 일반적으로 실행 할 때 바이트 코드 를 최적화 하지 않 기 때문에 이러한 최 적 화 는 여전히 중요 하 다.물론 이곳 의 일부 기 교 는 다른 해석 형 언어 에 도 사용 되 므 로 여러분 도 참고 하 실 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: