자바스크립트 기초 테스트 2
더보기에 해답과 풀이가 있습니다. 답 전체보기는 맨 하단에 있습니다.
01.결괏값을 작성하시오.
{
if( null ){
console.log("true");
} else {
console.log("false");
}
}
답 : false
💪 풀이
null이 조건식에 들어갈 경우 false입니다.
+
02.결괏값을 작성하시오.
{
let num = 0;
while( num <= 5 ){
num++;
console.log(num);
}
}
답 : 1,2,3,4,5,6
💪 풀이
조건이 true일 때 반복하는 while문에 대한 문제입니다.
1) num이라는 변수가 정해져 있고 값이 0입니다.
2) while문을 실행합니다. 루프 조건이 num이 5보다 작거나 같을 때입니다.
3) num++은 num의 1 증가를 의미합니다.
4) 여기서 출력되는 값에 주의해야합니다.
num값이 0일 때 0이 출력되는 것이 아니라 num++이 있기 때문에 1로 출력됩니다.
즉 num의 값이 0이면 1, 1이면 2, 2이면 3, 3이면 4, 4이면 5, 5이면 6으로 값이 출력됩니다.
5) 조건이 5보다 작거나 같을 때이므로 6으로 넘어가지 않고 5까지만 실행됩니다.
* while루프가 6번 반복되며 num의 값은 1부터 6까지 증가합니다. *
03.결괏값을 작성하시오.
{
const str = [100, 200, 300, 400, 500];
str.forEach(function(i){
console.log(i);
});
}
답 : 100, 200, 300, 400, 500
💪 풀이
매개변수와 forEach로 배열 'str'의 요소를 출력하는 예제입니다.
⭐forEach는 배열이 있어야만 실행이 가능합니다.
1) forEach앞의 배열 str넣음으로써 배열 str의 각 요소를 출력하는 함수를 전달합니다.
2) 이 함수는 각 요소를 'i'라는 매개변수로 받아 실행하는 형식입니다.
* 전달하는 형식으로 생각한다면 쉽습니다. *
04.결괏값을 작성하시오.
{
const str = [100, 200, 300, 400, 500];
for(let i of str){
console.log(i);
}
}
답 : 100, 200, 300, 400, 500
💪 풀이
'for of' 반복문을 사용하여 배열 str의 요소를 출력하는 예제입니다.
⭐for of는 배열에 들어있는 요소만을 뽑아 낼 수 있습니다.
1) str이라는 배열에 대한 요소([]안에 있는 것)를 i에 할당하여 console.log() 함수를 사용하여 출력하는 형식입니다.
+ for in과의 차이
for in은 of 와 달리 객체의 key값과 value 값을 받을 수 있기 때문에 for in문에서 배열을 사용하는 것은 적절한
방법이 아닙니다. 즉 of는 배열, in은 객체라 기억해주면 좋습니다.
05.결괏값을 작성하시오.
{
const obj = {
a: 100,
b: 200
};
for(let key in obj) {
console.log(key);
console.log(obj[key]);
}
}
답 :
a
100
b
200
💪 풀이
객체 프로퍼티와 for in 문에 대한 예제입니다.
1) for...in 반복문은 객체 프로퍼티를 순회하므로 변수 key에는 순회 할 때마다 객체 obj의 프로퍼티 이름이 할당됩니다. 즉 이 식에서는 a,와 b 를 나타냅니다. 따라서 첫번째 console.log(key)를 실행하면 a, b가 출력됩니다.
2) 프로퍼티 이름 (a, b)의 값을 가져와야 하므로 대괄호([])를 사용, 즉 obj[key]를 통해 각 값을 가져옵니다.
따라서 두번째 console.log(obj[key])를 싱행하면 100, 200의 값이 출력이 됩니다.
3) for...in 1번째 반복시
a
100
4) for...in 2번째 반복시
b
200
⭐property : 객체 안에 선언된 이름과 값으로 이루어진 한 쌍
06.결괏값을 작성하시오.
{
let num = 0;
while( true ){
num++;
if( num == 3 ){
continue;
}
if( num > 6 ){
break;
}
console.log(num);
}
}
답 : 1, 2, 4, 5, 6
💪 풀이
while 무한 루프와 continue, break문에 대한 예제입니다.
1) num이라는 변수 값이 0으로 정해져 있습니다.
2) while문을 실행하여 조건을 확인합니다.
3) 조건식이 true이기 때문에 무한으로 실행됩니다.
4) num++ 수식이 있기 때문에 1을 더하여 시작됩니다. ( 0 이 아닌 1부터 시작, 변수는 반복될 수록 1씩 올라갑니다. )
5) 첫 if 문의 조건식에서 num의 값이 3일 때 continue문이 있기 때문에 3에 대한 실행은 건너뛰고 다시 처음으로
돌아갑니다.
6) 두번째 if문의 조건식이 num의 값이 6의 아래일 때 break실행이기 때문에 값 6까지만 실행하게 되면서
종료가 됩니다.
답 오류 6 출력되지 않음 * 수정필요
07.결괏값을 작성하시오.
{
for(let i=1; i<=5; i++){
console.log(i);
if(i == 3){
break;
}
}
}
답 : 1, 2, 3
💪 풀이
for문과 break문에 대한 예제입니다.
1) for문으로 1부터 5까지 5번 반복이 되는 식입니다.
2) if문의 조건식에 i의 값이 3일 때 break문이 있기 때문에 실행이 멈춥니다.
3) 3까지 실행이 됐으므로 출력값은
1,2,3 입니다.
⭐ continue는 즉시 종료이기 때문에 값이 출력되지 않고 break문은 실행이 된 후의 종료이기 때문에
값이 출력됩니다.
08.결괏값을 작성하시오.
{
let num = 0;
while (num < 20){
num++;
console.log(num);
if(num == 1){
break;
}
}
}
답 : 1
💪 풀이
while문과 break문에 대한 예제입니다.
1) num이라는 변수가 0으로 지정되었습니다.
2) while문을 실행합니다. 여기서 조건식이 true이며 num++로 인해 1부터 시작하게 됩니다.
3) 하지만 if문의 조건식이 i가 1일 때 break문이므로 1번만 실행됩니다.
09.결괏값을 작성하시오.
{
let num = 100;
switch(num){
case 100 :
console.log("100");
break;
case 200 :
console.log("200");
break;
default :
console.log("300");
}
}
답 : 100
💪 풀이
switch문을 사용하여 변수의 값에 따라 나누는 예제입니다.
1)num이라는 변수를 100으로 설정했습니다.
2)case 100:은 num 변수의 값이 100일 때 실행됩니다. 100이 출력이 되고 breack문 실행으로 switch문을 빠져나갑니다.
3)case 200:는 num 변수의 값이 200일 때 실행됩니다. 하지만 num 변수의 값은 100이므로 이 블록은 실행되지 않습니다.
4)
⭐switch문 어떤 값을 가진 대상을 두고 조건값과 일치하는지를 확인하고 동작을 수행하는 방식입니다.
특정 변수를 다양한 상황에서 비교할 수 있게 해줍니다.
10.결괏값을 작성하시오.
{
func = () => {
const str = "함수가 실행되었습니다.";
return str;
}
console.log(func());
}
답 : 함수가 실행되었습니다.
💪 풀이
리턴 화살표 함수에 관련된 예제입니다. 아래와 같습니다.
⭐function func(){
const str = "실행되었습니다.";
return str;
};
document.write(func());
11.결괏값을 작성하시오.
{
let direct = 1;
function gallery(num){
if(num){
if(num == 2) direct++;
} else {
if(num == 1) direct--;
}
}
gallery(2);
console.log(direct);
}
답 :
💪 풀이
⭐direct라는 변수는 1이며 gallery 함수는 num이라는 인자(전달되는 값)을 받습니다.
1) direct라는 변수의 값은 1입니다.
2) 함수의 요소명은 gallery이며 이 함수는 num이라는 인자를 받게 됩니다.
즉 num에 gallery의 값 2가 들어가게 됩니다.
3) function gallery(2)라는 조건이 갖추어 지고 식이 실행됩니다.
4) if(num == 2) num이 2일 경우 direct의 값에 1을 추가한다. 라는 의미이며 이 때 num은 2이기에 direct에 1이
추가됩니다.
5) 그러므로 기존 let direct =1 이었기 때문에 여기에 gallery의 num이 2일 경우 1을 추가한다의 direct++이 적용되어
답은 2가 됩니다.
* 기존 direct = 1 여기에 조건이 성립하여 direct++추가 = 2
12.결괏값을 작성하시오.
{
let sum = 0;
for(var i=1; i<=100; i++) {
sum += i;
};
console.log(sum);
}
답 : 5050
💪 풀이
for문을 이용해 1부터 100까지의 수를 합하는 예제입니다.
1) sum 변수를 0으로 지정합니다.
2) for문을 사용하여 i 변수를 1부터 100까지 1씩 증가시키며 반복합니다.
3) sum += i; 구문을 통해 i값을 sum변수에 누적하여 더합니다.
4) for루프가 종료된 후에는 1부터 100까지의 수를 더한 값이 sum 변수에 저장됩니다.
5) 출력되는 값은 5050
13.다음의 결괏값을 보고 빈칸을 작성하시오.
{
const obj = {
a: 100,
b: 200,
c: "javascript"
}
const { a:_____, b:_____, c:_____ } = obj;
document.write(name1);
document.write(name2);
document.write(name3);
//100
//200
//javascript
}
답 : name1, name2, name3
💪 풀이
객체 비구조화 할당을 사용하는 예제입니다.
객체 비구조화 할당은 객체의 속성 값을 변수에 할당하기 위한 방법으로 아래와 같은 형태로 사용됩니다.
⭐{ 속성명: 변수명 }
따라서 const { a: name1, b: name2, c: name3 } = obj; 의 형태를 갖추게 됩니다.
14.다음의 결괏값을 보고 빈칸을 작성하시오.
{
const obj = {
a: 100,
b: 200,
c: "javascript"
}
const { a, b, c } = _______;
document.write(a);
document.write(b);
document.write(c);
//100
//200
//javascript
}
답 : obj
💪 풀이
객체 비구조화 할당을 사용하는 예제입니다.
obj 객체의 속성 값을 각 a,b,c 변수에 할당합니다. ⭐{ 속성명: 변수명 } 를 사용합니다.
따라서, const { a, b, c } = ______; 구문에서는 obj가 들어가며 객체의 a 속성 값이 a 변수에 할당되고, b 속성 값이 b 변수에 할당되고, c 속성 값이 c 변수에 할당됩니다.
15.다음의 결괏값을 작성하시오!
{
const objA = {
a: 100,
b: 200
}
const objB = {
c: "javascript",
d: "jquery"
}
const spread = {...objA, ...objB}
document.write(spread.a);
document.write(spread.b);
document.write(spread.c);
document.write(spread.d);
}
답 : 100, 200, javascript, jquery
💪 풀이
객체 전개 연산자(spread operator)를 사용하는 예제입니다.
객체 전개 연산자는 '...'기호를 사용하여 객체의 속성을 펼쳐서 새로운 객체를 만들 수 있습니다.
따라서 const spread = {...objA, ...objB}의 구문에서는 obja객체와 objb 객체의 속성을 모두 포함하는
새로운 객체 spread를 만들게 됩니다. 통합된 객체 spread로 각 속성 값(abcd)가 출력됩니다.
16.다음의 결괏값을 작성하시오!
{
const char = ["J","A","V","A","S","C","R","I","P","T"];
for(let i=9; i>=0; i--){
console.log(char[i]);
}
}
답 : T, P, I, R, C, S, A, V, A, J
💪 풀이
배열 char의 요소를 거꾸로 출력하는 예제입니다.
1) 반복문 for를 사용하여 i변수를 9부터 0까지 1씩 감소시킵니다. ( i -- )
2) 변수가 감소되면 배열이 역순으로 출력됩니다. ( 배열 번호 )
17.다음의 결괏값을 작성하시오!
{
let a = 1, b = 2, c = 3, result;
result = ++a + b++ + ++c;
console.log(result);
console.log(a);
console.log(b);
console.log(c);
}
답 : 8, 2, 3, 4
💪 풀이
전치 후치에 관한 예제입니다.
1) a, b, c, result의 변수의 값을 지정해줍니다.
2) 식의 후치에 나온 ++보다 우선순위이기 때문에 전치의 식만 실행됩니다.
3) result의 식에서 ++a = 2, b++ =2, ++c = 4 8이됩니다.
4) 변수만 실행하는 경우 전치 후치 모두 식이 실행되므로 a를 실행할 경우 값은 2, b를 실행할 경우 값은 3, c를 실행할 경우 값은 4가 됩니다.
18.다음의 결괏값을 작성하시오!
{
let i = 1;
while(i < 5){
console.log(i);
i++;
}
console.log(i);
}
답 : 12345
💪 풀이
while반복문을 사용한 예제입니다.
1) 변수 i가 1로 지정되었습니다.
2) while반복문의 조건식 i < 5가 참일 동안 실행하게 됩니다. 여기서 i++는 변수를 1씩 증가시킵니다.
3) 조건식에 따르면 반복문은 총 4번이 실행되면서 1부터 4까지의 값이 출력 됩니다.
4) 반복문을 빠져나온 후에도 i 변수 값인 5가 출력됩니다.
⭐while반복문에서는 i변수가 4까지만 증가하고 i 변수의 값이 5일 때 조건식 i<5가 거짓이 되면서 반복문이 빠져나오는 것이기 때문에 i 변수 값 5는 출력됩니다.
19.다음의 결괏값을 작성하시오!
{
let num = [32, 93, 15, 86, 50];
let sum = 0;
for(let i=0; i < num.length; i++){
sum = sum * i;
}
console.log(sum)
}
답 : 0
💪 풀이
length로 배열의 각 요소를 합산 출력하는 예제입니다.
1)배열 num과 변수 sum이 선언됩니다.
2)for 반복문으로 배열의 각 요소를 합산합니다. 여기서 length는 배열을 세어줍니다.
3) 합산하는 부분에서 sum이 0으로 선언되어 있기 때문에 i에 숫자가 들어가도 결과는 항상 0이 됩니다.
20.다음의 결괏값을 작성하시오!
{
let a, b, result;
a = 7, b = 4
result = a & b;
console.log(result)
}
답 : 4
💪 풀이
비트 연산자 &을 사용하는 예제입니다.
1) 변수 a는 7, b는 4입니다. 7은 이진수로 111 b는 100입니다.
2) & 연산자를 사용하여 이진수로 변환한 두 값을 비교합니다.
111
&100
---------
100
⭐비트 AND 연산의 결과는 각 비트가 모두 1일 때 1을 반환하고, 그렇지 않으면 0을 반환합니다.
답
1 - false
2 - 1, 2, 3, 4, 5, 6
3 - 100, 200, 300, 400, 500
4 - 100, 200, 300, 400, 500
5 - a, 100, b, 200
6 - 1, 2, 4, 5, 6
7 - 1, 2, 3
8 - 1
9 - 100
10 - 함수가 실행되었습니다.
11 - 2
12 - 5050
13 - name1, name2, name3
14 - obj
15 - 100, 200, javascript, jquery
16 - T, P, I, R, C, S, A, V, A, J
17 - 8, 2, 3, 4
18 - 1, 2, 3, 4, 5
19 - 0
20 - 4