JavaScript가 무엇인지 설명해 주세요.
자바스크립트는 ‘웹 페이지에 생동감을 불어넣기 위해’ 만들어진 프로그래밍 언어로 정적인 HTML과 CSS로 만들어진 웹 페이지를 동적으로 변경해주는 역할을 한다.
let
,var
,const
를 사용하여 생성된 변수들의 차이점은 무엇인가요?
var
: 값의 재선언, 재할당이 모두 가능하다.let
: 값의 재선언은 되지 않으며, 재할당만 가능하다.const
: 값의 재선언과 재할당 모두 불가능하다. 따라서 상수(변하지 않는 값)에 사용한다. 또한 const는 반드시 선언과 동시에 할당이 이루어져야 한다.var
와 let/const
의 가장 큰 차이: 스코프(Scope)가 다르다.
var
: 함수 스코프let
, const
: 블록 스코프JavaScript의 데이터 타입의 종류를 나열해 주세요.
함수의 정의와 호출을 구분해서 설명해 주세요.
// 함수의 이름부터 함수에 들어갈 매개변수(괄호 속), 함수를 실행했을 때 수행할 구체적인 내용(중괄호 속)까지 정의(Definition)하는 것
function sayHello() { //함수의 정의 혹은 선언
console.log("안녕하세요! 만나서 반갑습니다!");
}
// 함수가 동작하게 하려고 미리 정의해둔 내용을 함수의 이름으로 호출(Call)하는 것
sayHello(); // 함수의 호출 혹은 실행
Math와 관련된 함수(메소드)를 아는 대로 설명해 주세요.
Math.min()
/ .max()
: 인수로 전달받은 값 중에서 가장 작은/큰 수를 반환한다.
인수가 전달되지 않으면 Infinity
/ -Infinity
를 반환하며, 인수 중에 비교할 수 없는 값이 포함되어 있으면 NaN
을 반환한다.
Math.random( )
: 0보다 크거나 같고 1보다 작은 무작위 숫자(random number)를 반환한다.
Math.round( )
: 인수로 전달받은 값을 소수점 첫 번째 자리에서 반올림하여 그 결과값을 반환한다.
Math.floor( )
: 인수로 전달받은 값과 같거나 작은 수 중에서 가장 큰 정수를 반환한다.
Math.ceil()
: 인수로 전달받은 값과 같거나 큰 수 중에서 가장 작은 정수를 반환한다.
==
와===
의 차이점을 설명해 주세요.
==
: 엄격하지 않은 비교로, 데이터 비교 대상을 숫자형으로 바꾼 후 비교 (값만 비교) [동등 연산자]===
: 데이터 형 변환 없이도 값을 비교 가능 (값과 형까지 비교) [일치 연산자]조건문이 필요한 이유는 무엇인가요?
다양한 상황에 실행될 내용을 설정하고, 그에 따라 어떠한 작업을 수행하게 해준다.
함수의 인자가 필요한 이유는 무엇인가요?
함수의 이름 뒤에는 input이 들어갈 공간인 ( )이 존재한다. 함수를 선언할 때 이 공간에 넣는 값을 parameter(매개변수)라고 하고, 함수를 호출할 때 넣는 값은 argument(인자)라고 부른다.
function sayGoodbye(name) { // 여기서 name은 parameter
return "Goodbye, " + name + "!";
}
sayGoodbye("my friend"); // "Goodbye, my friend!"
sayGoodbye("my teacher"); // "Goodbye, my teacher!"
// 여기서 "my friend"와 "my teacher"는 argument
인자가 필요한 이유는 함수에 인자로 서로 다른 데이터를 제공하면 반환되는 결과값도 달라지기 때문이다.
배열이 필요한 이유는 무엇인가요?
연관성이 있는 데이터를 한 곳에 저장하여 효율적으로 데이터를 관리하기 위하여 사용한다. 배열을 사용하면 각 데이터 요소마다 0부터 순차적으로 인덱스를 부여하여 손쉽게 필요한 데이터를 찾아서 사용할 수 있다.
배열의 요소에 접근하는 방법을 설명해 주세요.
배열에 요소에 접근하기 위해서는 변수명 뒤에 대괄호와 인덱스를 사용함으로써 각 요소에 접근할 수 있다. 이때 주의할 점은 인덱스가 0부터 시작한다는 점이다.
let arr = [12, 25, christmas];
console.log(arr[0]) // 12
console.log(arr[1]) // 25
console.log(arr[2]) // christmas
배열의 메소드를 아는대로 설명해 주세요.
concat
: 복수의 배열을 결합할 때 사용
join
: 배열의 요소를 합쳐서 string으로 변환할 때 사용
push
, pop
: 배열의 가장 마지막에 요소를 추가/제거할 때
unshift
, shift
: 배열의 가장 앞에 새로운 요소를 추가/제거할 때
forEach
: 배열의 각 요소에 대하여 콜백함수에 정의한 연산을 진행 할 때
splice
: 배열의 요소 중 특정 구간을 추출할 때
slice
: 어떤 배열의 begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환한다. 원본 배열은 바뀌지 않는다.
map
과forEach
의 차이점을 설명해 주세요.
forEach
: 단순 반복만 수행한다.map
: 변경 후 새로운 배열 리턴 , 배열의 요소를 전체적으로 바꾸고 싶을때 사용합니다.객체가 필요한 이유는 무엇인가요?
배열 내 요소들은 인덱스로만 구분 되어지는 반면, 객체의 프로퍼티는 속성을 나타내는 키와 그에 대한 값으로 구성되기 때문에 데이터를 더욱 직관적으로 저장하고 불러올 수 있다.
객체의 값에 접근하는 방법을 설명해 주세요.
dot notation
: 객체의 식별자 뒤에 .
을 붙히고 키(Key)를 입력한다.
bracket notation
: 객체의 식별자 뒤에 [ ]
을 붙히고 그 안에 키(Key)를 입력한다.
객체의 값에 접근하는 방법 두 개의 차이점에 대해 설명해주세요.
Dot Notation
: 새로운 변수를 할당하여 접근 불가능, 존재하지 않는 key에 접근시 undefined 반환Bracket Notation
: 새로운 변수로 할당하여 접근 가능 객체의 값을 추가, 수정, 삭제하는 방법을 설명해 주세요.
추가 수정 삭제 모두 객체 값에 접근이 우선이며 접근 후
Scope에 대해 아는대로 설명해 주세요.
스코프(Scope)
: 변수가 존재 할 수 있는 범위
ES6 템플릿 리터럴은 문자열을 생성하는데 많은 유연성을 제공합니다. 이에 대한 예를 들 수 있나요?
+
로 더해야 했지만, ${ }
을 통해 쉽게 작성 가능var person = { name: 'Tyler', age: 28 };
console.log('Hi, my name is ' + person.name + ' and I am ' + person.age + ' years old!');
// 'Hi, my name is Tyler and I am 28 years old!'
const person = { name: 'Tyler', age: 28 };
console.log(`Hi, my name is ${person.name} and I am ${person.age} years old!`);
// 'Hi, my name is Tyler and I am 28 years old!'