Leeyanggoo
[JS] 문제는 알고 보니 나였구요 ㅋㅋ 본문
자바스크립트 테스트
수업시간에 배운 자바스크립트를 간단하게 테스트합니다. 제대로 배웠는지 간단하게 테스해보세요!
01. 결괏값을 작성하시오. ⭕
{
const str = "javascript";
const text = str.indexOf("a");
const text2 = str.lastIndexOf("a");
const text3 = str.includes("a");
console.log(text);
console.log(text2);
console.log(text3);
}
1
3
true
02. 다음의 결괏값을 보고 빈칸을 채우시오. ⭕
{
function func(){
document.write("함수2가 실행되었습니다.");
}
function callback(str){
document.write("함수1가 실행되었습니다.");
_______();
}
callback(func);
//함수1가 실행되었습니다.
//함수2가 실행되었습니다.
}
str
03. 결괏값을 작성하시오. ⭕
{
function func(a, b){
console.log(arguments[0]);
console.log(arguments[1]);
}
func("1", "2");
}
1
2
04. 결괏값을 작성하시오. ⭕
{
function func(num, name, word){
this.num = num;
this.name = name;
this.word = word;
}
func.prototype = {
result1 : function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
},
result2 : function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
},
result3 : function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
}
}
const info1 = new func("1", "함수", "실행");
const info2 = new func("2", "자바스크립트", "실행");
const info3 = new func("3", "제이쿼리", "실행");
info1.result1();
info2.result2();
}
1. 함수가 실행되었습니다.
2. 자바스크립트가 실행되었습니다.
05. 결괏값을 작성하시오. ⭕
{
function func(num, name, word){
this.num = num;
this.name = name;
this.word = word;
}
func.prototype.result = function(){
console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
}
const info1 = new func("1", "함수", "실행");
const info2 = new func("2", "자바스크립트", "실행");
const info3 = new func("3", "제이쿼리", "실행");
info1.result();
}
1. 함수가 실행되었습니다.
06. 결괏값을 작성하시오. ⭕
{
function func(index){
console.log("함수가 실행되었습니다." + index);
}
function callback(num){
for( let i=1; i<=1; i++){
num(i);
}
}
callback(func);
}
함수가 실행되었습니다. 1
07. 결괏값을 작성하시오. ❌
{
let num = 1;
do {
num++;
console.log("실행되었습니다.");
} while (num <= 5);
}
실행되었습니다.
실행되었습니다.
실행되었습니다.
실행되었습니다.
실행되었습니다.
08. 결괏값을 작성하시오. ❌
{
const arr = [100, 200, 300, 400, 500];
const text1 = arr.join("*");
const text2 = arr.join("-");
const text3 = arr.join("");
const text4 = arr.join(" ");
console.log(text1);
console.log(text2);
console.log(text3);
console.log(text4);
}
100*200*300*400*500
100-200-300-400-500
100200300400500
100 200 300 400 500
09. 다음을 최대한 짧게 약식으로 표현하시오. ⭕
{
function func(str){
return str;
}
func("함수가 실행되었습니다.")
}
func = str => str;
10. 다음을 결과값을 작성하시오. ❌
{
function func(){
let i = 10, j = 10, k = 30;
i /= j;
j -= i;
k %= j;
console.log(i);
console.log(j);
console.log(k);
}
func();
}
1
9
3
11. 다음을 결과값을 작성하시오. ❌
{
let k = 0;
let temp;
for(let i=0; i<=3; i++){
temp = k;
k++;
console.log(temp + "번");
}
}
0번
1번
2번
3번
12. 다음을 결과값을 작성하시오. ❌
{
let num1 = 3;
let num2 = 7;
if(++num1 < 5 || ++num2 > 8){
console.log(num1);
}
console.log(num2)
}
4
7
13. 다음을 결과값을 작성하시오. ⭕
{
let num = [1, 5, 1, 2, 7, 5];
for(let i=0; i<6; i++){
if((i+1) % 2 == 0){
console.log(num[i]);
}
}
}
5
2
5
14. 다음을 결과값을 작성하시오. ❌
{
let num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for(let i=9; i>=0; i--){
switch(num[i] % 2){
case 1:
console.log(num[i]);
break;
default:
console.log("*");
}
}
}
9
*
7
*
5
*
3
*
1
*
15. 다음을 결과값을 작성하시오. ❌
{
let cnt = 0;
let sum = 0;
for(let i=0; i<=7; i++){
if(i%2 == 1){
cnt++;
sum = sum + i;
}
}
console.log(cnt + ", "+sum);
}
4, 16
16. 다음을 결과값을 작성하시오. ⭕
{
let data = [70, 80, 75, 60, 90];
let best = 1;
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)
}
2, 90
17. 다음을 결과값을 작성하시오. ⭕
{
let a, b, result;
a = 7, b = 4
result = a & b;
console.log(result)
}
4
18. 다음을 결과값을 작성하시오. ⭕
{
function solution(a, b, c){
let answer="YES", max;
let tot = a + b + c;
if(a > b) max = a;
else max = b;
if(c > max) max = c;
if(tot-max <= max) answer = "NO";
return answer;
}
console.log(solution(13, 33, 17));
}
NO
19. 다음을 결과값을 작성하시오. ⭕
{
function solution(a, b, c){
let answer;
if(a < b) answer = a;
else answer = b;
if(c < answer) answer = c;
return answer;
}
console.log(solution(2, 5, 1));
}
1
20. 다음을 결과값을 작성하시오. ⭕
{
function solution(day, arr){
let answer = 0;
for(let x of arr){
if(x % 10 == day) answer++;
}
return answer;
}
arr = [25, 23, 11, 47, 53, 17, 33];
console.log(solution(3, arr));
}
3
오답풀이,,,
07. 결괏값을 작성하시오.
{
let num = 1;
do {
num++;
console.log("실행되었습니다.");
} while (num <= 5);
}
변수 num의 값이 1일 때 do while문의 실행으로 점점 증가하다가 num이 5가 되면 멈추게 됩니다.
저는 num++; 다음에 console.log가 오기 때문에 4번만 실행하는 것이라 착각을 했습니다...
num은 1부터 5까지 증가하기 때문에 5번 실행됩니다.
따라서 정답은 "실행되었습니다."가 5번 나오게 됩니다.
08. 결괏값을 작성하시오.
{
const arr = [100, 200, 300, 400, 500];
const text1 = arr.join("*");
const text2 = arr.join("-");
const text3 = arr.join("");
const text4 = arr.join(" ");
console.log(text1);
console.log(text2);
console.log(text3);
console.log(text4);
}
이 문제는 배열 메서드 중 하나인 join()의 특징과 반환 값에 대해 이해하고 있어야 합니다.
하지만 저는 join()을 까먹었죠!
join()은 배열 요소를 문자열로 결합하고, 문자열로 반환하는 메서드입니다.
따라서 배열 요소 사이에 join의 괄호 속에 (추가할 무언가)가 들어갑니다.
첫 번째는 배열 요소 사이에 "*"이 들어가기 때문에 "100*200*300*400*500"이 나옵니다.
두 번째는 배열 요소 사이에 "-"이 들어가기 때문에 "100-200-300-400-500"이 나옵니다.
세 번째는 배열 요소 사이에 아무것도 들어가지 않기 때문에 "100200300400500"이 나옵니다.
네 번째는 배열 요소 사이에 공백(" ")이 들어가기 때문에 "100 200 300 400 500"이 나옵니다.
10. 다음을 결과값을 작성하시오.
{
function func(){
let i = 10, j = 10, k = 30;
i /= j;
j -= i;
k %= j;
console.log(i);
console.log(j);
console.log(k);
}
func();
}
다음은 자바스크립트의 연산자에 대한 이해가 있어야 풀 수 있는 문제입니다.
연산자는 연산 결과를 다시 변수에 할당한다는 점이 중요한 포인트입니다.
따라서 i=10이고 j=10일 때 "i /= j"의 연산 결과가 10 나누기 10의 몫인 "1"이 되고 i에 할당됩니다.
그럼 다음에 나오는 "j -= i"에서 j=10이고 i=1이기 때문에 10에서 1을 뺀 "9"가 j에 할당됩니다.
이후 "k %= j"는 k=30이고 j=9이기 때문에 30에서 9를 나눈 뒤 나머지인 "3"이 k에 할당됩니다.
따라서 console.log의 결과는 "1, 9, 3"이 됩니다.
11. 다음을 결과값을 작성하시오.
{
let k = 0;
let temp;
for(let i=0; i<=3; i++){
temp = k;
k++;
console.log(temp + "번");
}
}
다음은 for문의 진행 순서를 이해하고 있어야 풀 수 있는 문제입니다.
for문은 괄호 속의 조건에 따라 실행 횟수가 달라지므로 유심히 살펴 봐야 합니다.
i가 0부터 시작하고 3보다 작거나 같을 때까지 1씩 증가합니다.
따라서 for문은 i가 0, 1, 2, 3까지 증가하기에 4번 진행됩니다.
여기선 k가 0으로 시작을 하고 for문이 실행될 때마다 1씩 증가합니다.
중요한 점은 temp = k의 선언 뒤에 k가 k++로 1씩 증가하기 때문에 첫 번째 console.log의 temp는 0이 됩니다.
따라서 temp가 0부터 시작하고 for문이 4번 진행되기 때문에 정답은 "0번, 1번, 2번, 3번"이 됩니다.
12. 다음을 결과값을 작성하시오.
{
let num1 = 3;
let num2 = 7;
if(++num1 < 5 || ++num2 > 8){
console.log(num1);
}
console.log(num2)
}
다음은 논리 연산자 || (OR)와 if문의 속성을 이해해야 풀 수 있는 문제입니다.
따라서 if문의 조건을 보면 num1이 3에서 1증가한 4가 5보다 작기 때문에 "++num1 < 5"는 true,
num2는 1증가한 8이 8보다 크지는 않으므로 "++num2 > 8"는 false가 나오게 됩니다.
하지만 논리 연산자 ||는 둘 중 하나만 true라면 true이므로 if문이 실행됩니다.
따라서 num1은 1증가한 값인 "4"가 나오게 됩니다.
if문에서 증가한 num2의 값은 if문 안에서 존재합니다.
하지만 console.log(num2)는 if문 밖에 존재하기 때문에 num2의 초기 선언 값인 "7"이 나오게 됩니다.
14. 다음을 결과값을 작성하시오.
{
let num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for(let i=9; i>=0; i--){
switch(num[i] % 2){
case 1:
console.log(num[i]);
break;
default:
console.log("*");
}
}
}
다음은 switch문을 이해하고 있어야 풀 수 있는 문제입니다.
switch문은 주어진 조건에 해당하는 true를 case문에서 찾아간다는 점에서 다중if문과 구조가 비슷합니다.
다만 swtich문은 break로 실행을 멈추기 때문에, 조건을 잘 살펴야 합니다.
for문의 i는 9부터 1씩 감소하기 때문에 num[i]를 하게 되면 9부터 불러오게 됩니다.
swtich문의 조건은 num[i]를 2로 나눈 나머지가(num[i]%2) 1인 경우(case 1)이기 때문에 홀수 값을 의미합니다.
홀수는 그대로 보내고 짝수는 "*"을 보내기 때문에, 9부터 시작하는 switch문의 정답은
"9 * 7 * 5 * 3 * 1 *"이 나오게 됩니다.
15. 다음을 결과값을 작성하시오.
{
let cnt = 0;
let sum = 0;
for(let i=0; i<=7; i++){
if(i%2 == 1){
cnt++;
sum = sum + i;
}
}
console.log(cnt + ", "+sum);
}
다음은 for문 안에 if문이 들어간 문제입니다.
console.log가 for문 바깥에 있기 때문에 최종 결과만 나오게 됩니다.
i는 0부터 7까지 증가하기 때문에 총 8번이 반복되고, if문의 조건에 의해 홀수만 true가 됩니다.
따라서 0부터 7 사이의 홀수는 1, 3, 5, 7 4개이며 이들의 합은 16이므로 답은 "4, 16"이 나오게 됩니다.