1. 결괏값을 작성하시오.
(function(){
console.log("함수가 실행되었습니다.");
})();
A
: 함수가 실행되었습니다.
즉시 실행 함수로, 함수를 이름 없이 정의하고 즉시 실행하기 때문에 함수를 정의하는 즉시 함수 호출을 통해 실행된다.
2. 결괏값을 작성하시오.
function func(str = "함수가 실행되었습니다."){
document.write(str);
}
func();
A
: 함수가 실행되었습니다.
func라는 ㄴ함수를 정의하고, 문자열 매개변수 str을 전달받아 document.write( ) 메서드를 사용하여 화면에 출력한다.
str 매개 변수는 "함수가 실행되었습니다." 라는 기본값을 가지고 있다.
함수가 호출 될 때 인수를 전달하지 않으면, 이 기본값이 str인 매개 변수로 사용된다.
func( ); 구문은 func 함수를 호출하는데, 이 경우 인수를 전달하지 않았으므로 str 매개 변수의 기본값인 "함수가 실행되었습니다." 가 출력된다.
3. 결괏값을 작성하시오.
let sum = 0;
for(var i=1; i<=10; i+=2) {
sum += i;
};
document.write(sum);
A
: 25
변수 sum을 0으로 초기화 하고, 1부터 10까지의 홀수를 더하는 문제이다.
for문에서 i 변수를 1에서 시작하여 2씩 증가 시키면서 sum 변수에 i 값을 더한다.
for문이 실행되는 동안 sum 변수에 누적된 값은 1+3+5+7+9 = 25가 된다.
4. 결괏값을 작성하시오.
const obj = {
a: 100,
b: 200,
c: "javascript"
}
const { a, b, c } = _______;
document.write(a);
document.write(b);
document.write(c);
A
:obj
객체 리터럴을 사용하여 obj 변수를 정의하고 객체 속성 a, b, c에 각각 100, 200, javascript 값을 할당한다.
const {a,b,c} = ; 구문에서는 객체 디스트럭처링(Object destucturing) 문법을 사용하여 obj 객체의 속성을 각각 a, b, c 변수에 할당한다.
객체 obj에 값을 할당해야 하기 때문에 빈 칸에는 obj가 들어가야 한다.
✏ 객체 디스트럭처링 (Object destructuring) 문법
:ES6 (2015)부터 도입된 기능으로, 객체 속성의 값을 추출하여 변수에 할당하는 방법을 제공한다.
필요한 속성만을 선택하여 변수에 할당할 수 있으며, 기본값 설정도 가능하다.
객체에 해당 속성이 없는 경우 기본값이 할당 되는 것이다.
이 기능은 함수의 매개변수에서도 사용할 수 있다.
5. 결괏값을 작성하시오.
const objA = {
a: 100,
b: 200
}
const objB = {
c: "javascript",
d: "jquery"
}
const spread = {______, ______}
document.write(spread.a);
document.write(spread.b);
document.write(spread.c);
document.write(spread.d);
A
: ...objA, ...objB
객체 리터럴을 사용하여 objA, objB 변수를 정의하고, 각각의 객체 속성 a,b,c,d에 각각의 값을 할당하는 문제이다.
const spread = { , } 구문에서는 객체 스프레드 문법을 사용하여 objA, objB 객체의 속성을 모두 포함하는 새로운 객체를 생성한다.
따라서 spread 객체는 objA와 objB 객체의 모든 속성을 포함하게 된다.
6. 결괏값을 작성하시오. ✔
if( _____ ){
document.write("조건문이 실행되었습니다.(true)");
} else {
document.write("조건문이 실행되었습니다.(false)");
}
//document.write("조건문이 실행되었습니다.(false)");
//보기
//true, false, 1, "1", "", 0, null, undefined, [], {}
작성한 답 : false, 0 , null, undefined
※ 블린, 0, 값이 할당되지 않음(undefined), null은 전부 조건식에 작성했을 때 false가 되는 것들이다.
빈 객체와 빈 배열은 포함되지 않고 빈 "문자열"은 포함된다.
빈 "문자열"도 해당된다는 사실을 잊어버리지 않을 것.
A
: false, " "(빈 문자열), 0, null, undefined
0을 제외한 모든 숫자와 문자를 조건식에 넣게 되면 전부 true가 된다.
하물며 빈 배열을 넣어도 결과값은 true가 된다.
또한, 조건식에 불린도 넣을 수 있으며, true를 넣으면 true가, false가 된다.
데이터에 값이 없으면(null, undefined를 작성하면) false가 된다.
7. 결괏값을 작성하시오.
if( num == 100 ){
document.write("true");
} else {
document.write("false");
}
A
: (num == 100) ? document.write("true") : document.write("false")
삼항연산자의 형식은 (조건식) ? 참인 경우 실행문 : 거짓일 경우 실행문 이다.
조건식의 소괄호는 ( ) 생략할 수 있으며, 조건문과 실행문 사에는 ? (물음표)가 참일 때의 실행문과 거짓일 때의 실행문 사이에는 : (콜론)이 들어간다.
8. 결괏값을 작성하시오.
for(var i=1; i<=1; i++){
document.write(i);
for(var j=1; j<=5; j++){
document.write(j);
}
}
A
: 1
1 2 3 4 5
외부 for문은 변수 i가 1부터 1까지 반복된다. (i<=1이기 때문)
따라서 내부 for문도 한 번만 반복된다.
내부 for문의 변수 j는 1부터 5까지 반복된다. (j<=5이기 때문)
따라서 내부 for문은 1, 2, 3, 4, 5를 순서대로 출력한다.
9. 결괏값을 작성하시오.
const num = [100, 200, 300, 400, 500];
for(let i=0; i<num.length; i++){
document.write(_______);
}
A
: num [i]
for문에서 반복문 변수 i는 배열 num의 인덱스 값(자리값/키)을 나타낸다.
따라서 num[i]와 같이 인덱스 값을 사용하여 배열 요소에 접근할 수 있다.
10. 결괏값을 작성하시오.
const num = [100, 200, 300, 400, 500];
num.forEach(function(el){
document.write(________);
});
A
:el
forEach( ) 메서드는 배열의 요소 값, 키 값, 배열 전체를 받아올 수 있다.
이 문제에서는 배열의 요소 값만 받아오게 된다.
그 요소 값을 출력하기 위해서는 빈 칸에 el 즉 (element)가 들어가게 된다.
11. 다음을 보고 리턴값을 생략하여 한 줄로 표현하시오.
const func = str => {
return str;
}
A
: const func = str => str;
return값이 생략되기 때문에 return 구문 없이 바로 str이 된다.
12. 다음의 결괏값을 보고 빈 칸을 채우시오.
const num = [100, 200, 300, 400, 500];
for(let index of _____ ){
document.write(index);
}
A
: num
for of 문은 반복할 수 있는 객체의 모든 요소에 대해 반복문을 수행한다.
배열은 반복 가능한 객체이기 때문에 for of를 사용하여 배열의 모든 요소에 대해 반복문을 수행할 수 있다.
이 문제에서의 반복 변수 index는 배열 num의 요소 값 자체가 된다.
따라서 배열 num을 타깃으로 설정해 주기 위해 num을 작성한다.
13. 다음의 결괏값을 보고 빈 칸을 채우시오. ✔
function func(){
let i = 5, j = 4, k = 1, l, m;
l = i > 5 || j != 0;
m = j <= 4 && k < 1;
document.write(l);
document.write(m);
}
func();
작성한 답
: 4
※논리 연산식이므로 값이 정수가 아니라 true와 false의 값을 반환한다.
A
: true false
이 문제는 논리 연산자를 사용하는 문제이다.
함수 func( ) 안에서 변수 i, j, k, l, m을 선언하고 이들 변수에 값을 할당한다.
그 다음 논리 연산자 || (OR)과 &&(AND)를 사용하여 두 개의 논리식을 평가한다.
첫 번째 논리식(l = i > 5 || j != 0;) 에서는 변수 i가 5보다 크거나 (j의 값은 무시) j가 0이 아니어야 한다는 뜻이다.
그러나 i의 값은 5이고, j는 0이 이나므로 이 논리식의 값은 true가 된다.
두 번째 논리식(m = j <= 4 && k < 1;)에서는 변수 j가 4보다 작거나 같지 않으며 변수 k의 값이 1보다 작아야 한다는 의미이다.
그러나 변수 j가 4보다 작거나 같지 않으므로 m 변수의 값은 false가 된다.
14. 다음의 결괏값을 보고 빈 칸을 채우시오.
const arr = [100, 200, 300, 400, 500];
const text = arr.push(600);
document.write(arr);
const arr2 = [100, 200, 300, 400, 500];
const text2 = arr2.unshift(600);
document.write(arr2);
A
: 100, 200, 300, 400, 500, 600
600, 100, 200, 300, 400, 500
문자열 메서드 push( )는 배열의 마지막 요소에 값을 추가하고 unshift는 문자열의 처음에 값을 추가한다.
15. 다음의 결괏값을 보고 빈 칸을 채우시오.
const obj = {
a: 100,
b: 200
};
for(let key in obj) {
console.log(key);
}
A
: a, b
이 문제는 obj(객체)의 키를 출력하는 구문이다.
여기서 객체의 키는 a, b이므로 출력되는 값은 a, b이다.
16. 다음의 결괏값을 보고 빈 칸을 채우시오. ✔
let num = 0;
while(false){
num++;
if( num == 3 ){
continue;
}
if( num > 6 ){
break;
}
}
console.log(num);
A
: 0
while문을 사용하는 예시이다.
그러나 이 문제에서는 조건식이 항상 false이므로 while 문의 내부 코드는 실행되지 않는다.
즉, num 변수의 값은 0으로 유지된다.
17. 다음의 결괏값을 보고 빈 칸을 채우시오.
let a, b, result;
a = 7, b = 4
result = a & b;
console.log(result, a, b)
A
: 4 7 4
비트 AND 연산자(&)를 사용하여 두 개의 숫자를 비트 단위로 AND 연산하는 문제이다.
먼저 a와 b 변수에 각각 7과 4의 값을 할당한다.
그 다음 a & b 연산을 수행하고 결과값을 result 변수에 할당한다.
7은 2진수로 나타내면 0111이고, 4는 0100dlek.
비트 AND 연산은 각 비트별로 AND 연산을 수행하므로 다음과 같이 계산된다
0111 (7)
&0100 (4)
------------
0100 (4)
18. 다음의 결괏값을 보고 빈 칸을 채우시오.
let a = 1, b = 2, c = 3, result;
result = ++a + b++ + ++c;
console.log(result);
console.log(a);
console.log(b+c);
console.log(c);
A
: 8 2 7 4
먼저 a, b, c 변수에 각각 1, 2, 3의 값을 할당한다.
그리고 ++a와 ++c를 실행하여 각각 1씩 증가시킨다.
그러면 a는 2, c는 4가 된다.
b는 후치 연산자로 2의 값을 그대로 가지고 있는 상태이다.
(b++는 후치 연산자이므로 =보다 우선순위가 낮아 연산되지 않는다)
++a의 값 2, 와 b (2)그리고 ++c의 값 4를 더한 결과를 result 변수에 할당한다.
즉, result의 값은 8이 된다.
cosole.log에서 ++a는 1에서 1을 증가시켜 2가 되고,
b++는 2에서 1을 증가시켜 3이 되고,
++c는 3에서 1을 증가시켜 4가 된다.
19. 다음의 결괏값을 보고 빈 칸을 채우시오. ✔
let data = [70, 80, 75, 60, 90];
let best = 0;
let score = 0;
for(let i=0; i<data.length; i++){
if(data[i]>80) {
best++;
}
if(score < data[i]) {
score = data[i];
}
}
console.log(best, score)
A
best : 1 score: 90
이 문제에서 data 변수는 숫자 데이터를 담은 배열이다.
코드는 이 숫자들 중에 80 이상인 수의 개수와 가장 높은 수를 출력한다.
best 변수는 초기값으로 0을 가지고 있다.
이 변수는 for문을 통해 배열을 순회하면서, 80 이상인 수를 세기 위해 사용된다.
만약 배열에서 현재 값이 80 이상이라면 best 변수의 값을 1 증가 시킨다.
score 변수는 초기값으로 0을 가지고 있다.
이 변수는 for문을 통해 배열을 순회하면서 가장 높은 수를 찾기 위해 사용된다.
만약 배열에서 현재 수가 score 변수보다 크다면 score 변수의 값을 해당 점수로 대체한다.
실행 시 best 변수의 값은 1이 되고 (90만이 80보다 크기 때문) score 변수의 값은 90이 된다. (배열 안에서 가장 큰 수가 90이기 때문)
20. 다음의 결괏값을 보고 빈 칸을 채우시오.
function func(num1, num2){
if(num1 > num2) return num1
else return num2
}
console.log(func(10, 23) + func(40, 50))
A
: 73
이 문제는 두 개의 숫자 중에서 더 큰 값을 반환하여 서로 더하는 문제이다.
func 함수는 두 개의 숫자를 인자로 받는다.
만약 첫 번째 인자 num1이 두 번째 인자 num2 보다 크다면 num1을 반환하고, 그렇지 않으면 num2를 반환한다.
func(10,23)은 num1(10)이 num2(23)보다 작기 때문에 num2인 23을 반환하고,
func(40, 50)은 num1(40)이 num2(50) 작기 때문에 num2인 50을 반환한다.
따라서 func(10,23) + func(40,50)은 23+50 즉, 73이 된다.