학원에서 시험 봤어요 같이 풀어봐요 !
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);
}
indexOf 를 써서 첫번째 a 값을 가져와서 1
indexOf 는 앞에서 부터 값을 체크해요
lastindexOf 를 써서 첫번째 a 값을 가져와서 3
lastindexOf 은 뒤에서 부터 a값을 체크 해요
includes()는 a값이 있으므로 true
includes()는 값의 유무를 따져서 true, false를 반환해요
02. 다음의 결괏값을 보고 빈칸을 채우시오.
{
function func(){
document.write("함수2가 실행되었습니다.");
}
function callback(str){
document.write("함수1가 실행되었습니다.");
_______();
}
callback(func);
//함수1가 실행되었습니다.
//함수2가 실행되었습니다.
}
callback함수유형은 함수안에 함수를 실행시킨다는 의미에요
그래서 callback(func)는
function callback(func){
func();
// 매개변수로 받은 이름을 실행시켜요
}
위에 처럼 작동합니다.
03. 결괏값을 작성하시오.
{
function func(a, b){
console.log(arguments[0]);
console.log(arguments[1]);
}
func("1", "2");
}
아규먼트 함수에 대한 문제에요
fucntion func(a, b){
arguments[0] = a;
arguments[1] = b;
}
위처럼 값을 저장하기 때문에
출력은 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();
}
맨끝에 prototype 함수중 result1 , result2를 실행시킵니다.
func(num, name, word){
this.num = num;
this.name = name;
this.word = word;
}
이렇게 함수를 선언하여 입력받은 변수를 func함수의 값으로 설정합니다.
그래서 console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다."); 에 각각 값이 들어가서
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();
}
4번 문제와 똑같아요 함수 info1.result()만 실행되요
06. 결괏값을 작성하시오.
{
function func(index){
console.log("함수가 실행되었습니다." + index);
}
function callback(num){
for( let i=1; i<=1; i++){
num(i);
}
}
callback(func);
}
callback함수유형은 함수안에 함수를 실행시킨다는 의미에요
그래서 callback(func)는
function callback(num){
num();
// 매개변수로 받은 이름을 실행시켜요
}
callback(func)의 func는 func()함수를 실행시키는거에요
for 문 안에 있는 num()은
for 문 조건에 1번 실행되므로
func()함수를 1번 실행시키고
func(index)함수는 매개변수 함수이기 때문에
매개변수로 받은 i 값인 1 을 포함한
함수가 실행되었습니다. 1 이 실행되요
07. 결괏값을 작성하시오.
{
let num = 1;
do {
num++;
console.log("실행되었습니다.");
} while (num <= 5);
}
do while문에 대한 문제에요
do를 실행시키고
while( 조건 ) 조건에 맞을때마다 반복이 됩니다.
초기 num 값이 1이기 때문에
num++ 는 while 문이 끝난뒤 값을 증가 시켜요
consol.log가 1번 실행되고
num = 2 ..3..4..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( " * " ) 입력받은 매개변수*을 구분자로 써서
text1의 결과는 join(*)로 인해
100*200*300*400*500
text2의 결과는 join(-)로 인해
100-200-300-400-500
text3의 결과는 join()로 인해
100200300400500
text4의 결과는 join(" ")로 인해
100 200 300 400 500
처럼 출력되요
09. 다음을 최대한 짧게 약식으로 표현하시오.
{
function func(str){
return str;
}
func("함수가 실행되었습니다.")
}
화살표함수로 출력하는 문제에요
function func(str){
return str;
}
위 함수를 아래처럼 기본형으로 바꿨어요
func = (str) => { return str }
기본형의 리턴값이 1개 이므로 매개변수로 받은 str을 리턴 시켜주는 함수이기 때문에
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();
}
i /= j; 은 i = i / j 이므로 i 값은 1
i = 1 으로 변경되었으므루 아래 i 값들은 모두 1 로 계산해요
j -= i; 은 j= j-i 이므로 j = 9
k %= j는 k = k%j
k를 j 로 나눈 나머지 값 이므로
30을 9로 나눈 나머지값은 3이므로
출력은
1 9 3 이 나와요
11. 다음을 결과값을 작성하시오.
{
let k = 0;
let temp;
for(let i=0; i<=3; i++){
temp = k;
k++;
console.log(temp + "번");
}
}
for 문에 대한 문제에요
tem에 매번 k 값에 들어가며
console을 찍은후
for 문 i = 0 이 종료된뒤
k = k+1 을 연산하며 k값이 증가하고
i값이 증가합니다.
console엔
0번
1번
2번
3번
위처럼 출력이 되요
12. 다음을 결과값을 작성하시오.
{
let num1 = 3;
let num2 = 7;
if(++num1 < 5 || ++num2 > 8){
console.log(num1);
}
console.log(num2)
}
if 문안에 있는
++num1 값은 참이기 때문에 실행이 되고 num1값은 4로
++num2 값은 거짓이기 때문에 실행이 되지 않아 num2는 그대로 7입니다.
출력은 if문 안에 있는 || or 연산자 때문에 ++num1 값은 참이므로 조건 문이 실행됩니다.
console엔
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]);
}
}
}
for문과 배열에 관한 문제에요
for은 i가 0부터 6까지 총 7번이 반복되고
if문에 있는 조건
((i+1) % 2 == 0)
( i + 1 )가 %2 ==0 는 2로 나누었을때 나머지가 0이므로
i가 홀수일때만 작동해서
배열의 순서가 1번째 3번째 5번째 만 실행되어서
console 에 5 7 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("*");
}
}
}
for문과 switch문에 관한 문제에요
i가 9부터 1씩 줄어들고 0이면 종료되요 총 9번 반복 하죠 ?
switch 문에 num[i] % 2 조건이에요
첫번째 case문은 num[i] % 2 의 값이 1일때
console을 출력해줘 라고 하고
break문을 통해 멈춘뒤 for문이 실행되요
2번째 default는 나머지 값이 1이 아닌경우 실행이 되며 console에 * 을 출력시키므로
num[i] % 2 가 1일때 즉 홀수일때만 출력이되므로
9 7 5 3 1
num[i] % 2 가 1이 아닐땐
* * * * * 가 출력 되므로
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 문안에 조건은 i 값이 0 부터 7 까지 총 8 번 반복되고
if 문안에 조건 i%2 == 1일 때만 실행되므로
즉
i 가 1 3 5 7일때만 실행되고
cnt 는1씩 증가하고
sum 값에 i 를 더해줘요
그래서 답은
cnt = 4
sum =16 은 1 3 5 7 을 더한 값 입니다
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)
}
for은 i값이 0부터 data.length 값 즉 5 i값이 5까지 증가 시켜
if 문안에 조건에 따라서
값이 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));
}
if문의 조건에 따라 값이 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));
}
for of 구문에 따라 배열 안의 값이 반복되고
x %10 == 3 인 값이므로 23 , 53, 33 인 의 갯수
3이 출력됩니다.