>웹 프론트엔드 >JS 튜토리얼 >최신 JS 면접 질문 분석

최신 JS 면접 질문 분석

php中世界最好的语言
php中世界最好的语言원래의
2017-11-27 13:54:301958검색

웹 프론트엔드의 경우 면접 중에 반드시 JS 면접 질문을 접하게 됩니다. 오늘은 각 질문이 인상적인 JS 면접 질문을 요약해 보겠습니다.

사전 분석: 현재 역할에서 domain, js가 실행되기 전 var, function 키워드는 미리 선언해두지만 할당은 안해줍니다(개인의견)

어려워서가 아니라 해야해서 사전파싱이 감동이네요 조심하고 조금 부주의하게 대답하세요. 저는 분석 전 질문을 두 개 이상 접했는데, 그 중 두 가지를 아직도 기억하고 있습니다.

2-1. 사전분석 1

alert(a)
a();
var a=3;function a(){
    alert(10)
}   
alert(a)
a=6;
a();

------------분리선------

alert(a)
a();
var a=3;
var a=function(){
    alert(10)
}   
alert(a)
a=6;
a();

보세요. 이 코드에 접근했을 때 잘못된 답을 얻었습니다. 나중에 친구에게 조언을 구했는데 스스로 이해하고 바로 잡았습니다!
실제로 테스트 포인트는 두 가지가 있습니다. 첫 번째는 변수를 미리 선언하는 것이고, 두 번째는 변수 선언 전에 함수를 선언하는 것입니다!
첫 번째 부분의 결과를 간략하게 분석하겠습니다.
1. 함수 선언이 변수 선언보다 우선하므로 처음에는 a가 function a(){alert(10)}이고 이 함수가 표시됩니다.
2.a(), 함수가 실행되면 경고(10)가 나타납니다
3. Var a=3이 실행되므로 경고(a)는 3
4를 표시합니다. a(), 오류가 보고됩니다.
작업 결과의 두 번째 부분:
1.underfind
2. 오류 보고
앞서 언급했듯이 사전 구문 분석은 var 및 function 키워드를 사용한 사전 선언이지만 값 할당은 없습니다. 그래서 처음에는 underfind였고, a()가 실행될 때 a가 함수가 아니기 때문에 오류가 보고되었습니다.

//

함수 표현식, 변수 선언과 같음

var a=function(){
    alert(10)
}

//함수 선언, 변수 선언보다 좋음


function a(){
    alert(10)
}

2-2 사전 구문 분석 및 범위

var a=0;function aa(){
    alert(a)
    a=3
}

//결과가 아무것도 발생하지 않기 때문에 Alert(0)은 aa 함수가 실행될 때만 실행됩니다


------------1줄 구분------


var a=0;function aa(){
    alert(a)
    var a=3
}
aa();

//underfind aa 함수에는 var a=3이 있는데, aa 범위에는 변수 a가 미리 선언되어 있지만 값이 할당되지 않아서 underfind


------ - ----2번째 줄------

var a=0;function aa(a){
    alert(a)
    var a=3
}
aa(5)
alert(a)

//5,0 함수 본문에서 매개변수 a의

우선순위가 그보다 높습니다. 변수 a
------------라인 3 구분------

var a=0;function aa(a) {
Alert (a)
a=3
}
aa(5)
alert(a)
//5,0 함수 본문에서 Alert(a)를 실행하고 a=3을 실행하면 수정되는 것은 전역 변수가 아닙니다. 변수 a, 그러나 매개변수 a

------------4행 구분------


var a=0;function aa(a){
    alert(a)
    var a=3
    alert(a)
}
aa(5)

//5, 3

// 이게 좀 이해가 안가네요. 인터넷으로 조언을 구했는데 답변이 2가지네요. (이해하시는 분들은 댓글로 조언 부탁드립니다.)
//1. 우선순위가 변수 선언보다 높으므로 변수 a의 선언은 실제로 무시됩니다. 이는
//var a=0;
//function aa(a){
// var a=5;
//와 같습니다. Alert(a)
// a=3
// Alert( a)
//}
//aa(5)

//2. 형식 매개변수와 지역 변수는 우선순위가 동일하며 이는
/와 동일합니다. /var a=0;
//function aa(a){
// var a; 먼저
선언 // a=5 형식 매개변수와 변수 이름이 동일하므로 다룹니다!
//alert(a)// a=3//alert(a)
//}
//aa(5)

------------5행 구분-- ----------------


var a=0;function aa(a){
    alert(a)
    a=3
    alert(a)
}
aa()
alert(a)
//underfind  3  0

//우선 매개변수가 전역변수보다 우선순위가 높기 때문에 underfind
//a입니다. =3, 실제로 수정하면 형식 매개변수 a의 값이 전역 변수 a가 아닙니다. 내려가는 Alert(a)도 형식 매개변수 a

//마지막 알림(a)입니다



3. 루프와 재귀

3- 1. 피보나치 배열

이에 대해 많이 말하지 않겠습니다. 매우 간단하지만 매우 고전적입니다. 즉, 현재 항목은 이전 두 항목의 합과 같습니다

var arr=[];for(var i=0;i<10;i++ ){
    i<=1?arr.push(1):arr.push(arr[i-1]+arr[i-2]);
}
console.log(arr)

3-2. 데이터 배열

예를 들어 123454321 23456765432

어떻게 하나요? 그 당시 제 접근 방식은 앞면을 보여주고 뒷면을 보여 주는 방식으로 작성되었습니다. 코드가 너무 많아 나중에

//01234543210
//先展示前面的   01234
//n:开始的数字    m:结束的数字function num1(n,m){    for(var i=n;i<m;i++){
        //再展示后面的 543210
        console.log(i);        if(i===m-1){
            num2(n,m)
        }
    }
}function num2(n,m){    for(var i=m;i>=n;i--){
        console.log(i)
    }
}
num1(2,5)  //2345432

에 대해 공부했습니다. follow

1. 먼저 num(2,5)를 실행하면

function num(n,m){
    console.log(n);    if(n<m){
        num(n+1,m);
        console.log(n);
    }
}
num(2,5)  //2345432

이고 그 다음은

console.log(2); ->  num(3,5);  ->  console.log(2);      
//执行num(3,5);  就是是相当于   console.log(3); -> num(4,5); -> console.log(3); 下面以此类推
console.log(2); -> console.log(3); -> num(4,5); -> console.log(3); ->  console.log(2);

입니다. 이 사례를 읽으신 후 방법을 익히셨을 거라 믿습니다. PHP 중국어 웹사이트의 다른 관련 기사를 확인하세요!


관련 읽기:


CSS3으로 날아다니는 나비 애니메이션을 만드는 방법


공과 마우스 사이의 상호 작용을 구현하기 위해 캔버스를 사용하는 방법

캔버스를 사용하여 효과를 만드는 방법 입자 분수 애니메이션

위 내용은 최신 JS 면접 질문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.