내 이전 기사 인 "5 전형적인 JavaScript 인터뷰 연습"에 대한 다음 기사는 주요 JavaScript 개념에 중점을 둔 추가 일반적인 인터뷰 질문을 탐구합니다. 다이빙하자!
키 테이크 아웃 :
폐쇄는 중요합니다. 클로저 이해가 필수적입니다. 폐쇄 내의 가변 값은 핸들러 생성 시점에 고정되어 있지 않습니다. 핸들러가 실행될 때 현재 값을 반영합니다
운영자 Quirks :
"객체", "배열이 아님"을 반환합니다. - 를 사용하여 배열 유형을 안정적으로 확인하십시오
이벤트 루프 메커니즘 : 브라우저의 이벤트 루프는 이벤트 큐를 관리합니다. , 지연이 0 인 경우에도 나중에 실행을 위해 콜백을 대기합니다.
기능 최적화 : - 항상 입력을 검증하십시오 (음수, 0, 1은 프라임이 아닙니다. 2는 유일한 프라임입니다). 입력의 제곱근까지만 분할을 테스트하면 효율이 크게 향상됩니다.
typeof
질문 1 : 클로저 - 고전적인 문제 typeof []
<:>이 코드를 고려하십시오 :
instanceof
첫 번째 및 네 번째 버튼을 클릭 할 때 출력은 무엇입니까? 왜? <.>
답변 :
이것은 폐쇄 동작을 강조합니다. 코드는 "요소 #[버튼 수]"를 두 번 인쇄합니다. 변수는 모든 이벤트 핸들러에서 공유됩니다. 버튼을 클릭 할 때까지 루프가 완료되었고 - 는 최종 값 (버튼 수)을 유지합니다.
질문 2 : 폐쇄 문제 수정
이전 코드를 수정하여 버튼의 색인을 올바르게 인쇄합니다 (첫 번째는 0, 두 번째의 경우 1 등).
답변 : <code>setTimeout()</code>
<:> 두 솔루션 :
</:></previous>
</li> 솔루션 1 (iife) : <li>
<strong>
솔루션 2 (래퍼 함수) : <code>isPrime()</code>
</strong>
</li> 질문 3 : 데이터 유형 gotchas </clos>
</ul>
<out> 이것의 출력은 무엇입니까?
<p>
답변 : <strong>
</strong>
<ising> 어레이에 대한 놀라운 "객체"에 주목하십시오. 정확한 배열 유형 확인을 위해 </ising></p>를 사용하십시오
질문 4 : 이벤트 루프 순서 <p> </p>
<out> 출력은 무엇이며 왜?
<pre class="brush:php;toolbar:false"><code class="language-javascript">var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click', function() {
console.log('You clicked element #' + i);
});
}</code>
답변 :
이벤트 루프가 이것을 설명합니다. 콜백은 0ms 지연에도 대기합니다. 메인 스레드가 완료된 후에 실행됩니다
질문 5 : 알고리즘
숫자가 프라임 인 경우 를 반환하는 함수를 작성하십시오. 그렇지 않으면.
답변 :
<code class="language-javascript">var nodes = document.getElementsByTagName('button');
for (var i = 0; i < nodes.length; i++) {
nodes[i].addEventListener('click', function() {
console.log('You clicked element #' + i);
});
}</code>
이 최적화 된 버전은 입력 유효성 검사를 처리하고 제곱근까지 홀수를 점검합니다.
결론 :
이 연습은 인터뷰에서 자주 테스트되는 기본 JavaScript 개념을 다룹니다. 이해를 강화하고 인터뷰 성과를 향상시키기 위해 이것들을 실천하십시오. 위 내용은 5 더 JavaScript 인터뷰 연습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!