반응형
프론트엔드 개발자 이직 준비를 하면서 직접 질문을 받았던 내용을 대해서 정리해 보았습니다. 컴퓨터 공학 관련 질문, 자바스크립트, SPA 프레임워크, 웹 관련 질문과 프로젝트 경험 등 다양하게 질문을 하고, 꼬리에 꼬리를 무는 질문을 주로 많이 합니다. 아래 내용 참고하시고 면접에서 좋은 결과 있으시기를 바라겠습니다. 부족한 부분이나 피드백은 언제나 환영입니다😀 프로토 타입 프로토 타입이 무엇인가요? 자바스크립트 가장 상위의 프로토 타입 객체 모든 자바스크립트 객체는 Object.prototype을 상속받는다. 프로토 타입으로 할 수 있는 게 무엇인가요? 프로토 타입에 메서드 프로퍼티 추가 상속으로 기존 클래스의 메서드와 프로퍼티를 사용 Object.prototype은 무엇인가요? 자바스크립트 객체를 생..
try…catch를 사용하는 이유 자바스크립트는 에러가 발생하면, 스크립트가 종료된다. try..catch문을 에러가 발생할 것 같은 곳에서사용하면 스크립트 종료 없이 아래와 같이 동작하게 된다. 동작 순서 error 발생 try문 중단 catch 동작 이후 스크립트 실행 아후스크립트가 종료하지 않고 계속 진행한다. try { wakeup(); // ReferenceError: wakeup is not defined } catch(e) { console.log(e); } throw throw 고의로 오류를 발생시킨다. 스크립트 오류는 아니지만, throw 문을 사용하게 되면 오류를 발생 시킬 수 있다. try { // do Something; throw '에러 발생'; } catch(e) { consol..
$.merge(first, second) 첫번째 배열에 두번째 배열을 추가하여 합치게 된다. 배열을 보존하면서 합치고 싶을때는? merge 하기 전에 함수를 만들어 준다. var newArray = $.merge([], array); Sample var hero = ['superman', 'batman', 'pororo']; var person = ['짱구', '짱아', '신형만']; var array = $.merge($.merge([], hero), person)); console.log(array); console.log(hero); 결과 ["superman","batman","pororo","짱구","짱아","신형만"] ["superman","batman","pororo"] jQuery.merge..
sample document.body.innerHTML = 'Hello'; var time = 3000; var date = new Date().getTime() + time; var curDate = new Date().getTime(); while(curDate < date) { curDate = new Date().getTime(); } 위 코드 실행 시 반복문에 다 돌고 난 뒤 페이지에 Hello가 찍히게된다. innerHTML은 동기코드인데 왜 반복문이 다 돌고나서 찍히게 될까? 자바스크립트 실행과 페이지 렌더링을 별개이다. 자바스크립트 실행 이후 페이지 렌더링을 실행하게 된다. 단, 디버깅으로 보게되면 먼저 'Hello'가 렌더링이 된다.
비동기를 사용하는 이유 자바스크립트는 싱글 스레드 언어이다. 한번에 한가지일을 순차적으로 처리한다. 그러나, 웹은 방대한 자료를 가져오고, 효율적으로 사용하기 위해서 비동기적 프로그래밍이 필요하다 jQuery Deferred를 이용하여 비동기 함수 만드는 방법 Deferred() 비동기 함수로 만드려면 3가지 정도 과정이 필요하다. 1. Deferred() 객체 생성 var $dfd = $.Deferred(); 2. 프로미스 객체 return return $dfd.promise(); 3. 비동기 함수 실행 setTimeout(function() { console.log('async'); }, 300) 위 3가지 함수를 사용하면 아래와 같이 비동기로 사용할 수 있는 함수가 생기게 됩니다. function ..
익명함수란 ? 익명함수는 함수 리터럴 방식으로 만들어진 이름없는 함수 입니다. 함수 리터럴 방식을 알기전에 리터럴에 대하여 먼저 알아야 합니다. 리터럴 이란? 말그대로, 문자그대로 라는 뜻입니다. 우리가 데이터를 만들 때 사용하는 방식이 literal 방식입니다. var a = 10; var name = superman; 이러한 방법 들이 리터럴 방식입니다. 함수 리터럴이란? 함수를 문자그대로 변수에 담으면 함수 리터럴 방식으로 만드는 것입니다. var funcA = function(name){ alert(name + "님 환영합니다"); } 이런 식으로 변수에 데이터를 넣듯이, 변수에 함수를 담으면 함수 리터럴 방식으로 데이터를 만들었습니다. 그러면 다시, 익명함수로 돌아가보겠습니다. var funB ..
cssText() Element 객체의 style를 가져오거나 변경할 수 있습니다. 1. css 스타일 적용하는 방법 abc document.querySelector('.abc').style.cssText = 'background-color:red; width:300px; height:300px;'; 결과 2. css 스타일 가져오기 abc console.log(document.querySelector('.abc').style.cssText); // "background-color: blue;"
배열 값 변경 1. 인덱스를 이용 var hero = ['superman', 'batman', 'pororo']; hero[0] = 'ionman'; console.log(hero); //["ionman", "batman", "pororo"] 배열 값 삭제 1. delete를 사용 delete를 사용하면 빈자리에는 undefiend가 들어가게 됩니다. var hero = ['superman', 'batman', 'pororo']; delete hero[0]; console.log(hero); //[undefined, "batman", "pororo"] 2. splice() 메서드 이용 splice(변경값이 들어갈 위치, 그 위치에서 배열에서 지울 개수, 값, 값,,,,) 변경 값이 들어갈 위치 : 배열에..
자바스크립트에서는 배열 객체에 사용할 수 있는 다양한 메서드들이 있습니다. 배열 메서드들을 이용하면 많은 기능을 쉽게 구현할 수 있습니다. 1.toString() 배열 안의 값을 콤마를 찍어가며 모두 문자열로 출력합니다. var hero = ['superman', 'batman', 'pororo']; console.log(name.toString()); // "superman,batman,pororo" 2. join() toString() 메서드와 같이 배열안의 값을 문자열로 출력하지만, 특정 구분자를 사이에 넣어줍니다. var hero = ['superman', 'batman', 'pororo']; console.log(hero.join('>')); //"superman>batman>pororo" 3...
replace() 문자열에 검색할 값을 찾아서 새로운 값으로 변경하여 리턴해주는 메서드 입니다. replace('검색할값', '새로운값'); var str = 'hello java'; console.log(str.replace('java', 'javascript')); //hello javascript 단, 본인이 검색할 값은 첫 번째 한번 값만 바뀌게 됩니다. 특정 값을 모두 바꾸고 싶으면 아래의 방법을 사용해야 합니다. /java/g var str = "hello javascript and java"; console.log(str.replace(/java/g, 'type')); //"hello typescript and type' 대소문자를 구별하지 않으려면, /java/gi var str = "he..