“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”
자바스크립트 테스트
오늘 본 자바스크립트 테스트 문제와 정답을 정리하고 틀린 문제는 풀이를 해보자
01. 결괏값을 작성하시오.
{
if( null ){
console.log("true");
} else {
console.log("false");
}
}
😎결과 확인하기
02. 결괏값을 작성하시오.
{
let num = 0;
while( num <= 5 ){
num++;
console.log(num);
}
}
😎결과 확인하기
오답
console.log(num);이 num++; 보다 뒤에 있어서 0이 아닌 1부터 출력이 된다. 그래서 1부터 6까지 출력이 됨.
while문
while문은 조건이 참인 동안 반복적으로 코드를 실행하는 루프를 생성합니다. for문과 비슷하며 for문으로 변경이 가능합니다. 조건식에 맞지 않으면 한번도 실행 안될 수 있습니다. 또한 무한으로 빠질 수 있습니다.
03. 결괏값을 작성하시오.
{
const str = [100, 200, 300, 400, 500];
str.forEach(function(i){
console.log(i);
});
}
😎결과 확인하기
04. 결괏값을 작성하시오.
{
const str = [100, 200, 300, 400, 500];
for(let i of str){
console.log(i);
}
}
😎결과 확인하기
05. 결괏값을 작성하시오.
{
const obj = {
a: 100,
b: 200
};
for(let key in obj) {
console.log(key);
console.log(obj[key]);
}
}
😎결과 확인하기
오답
(key) : 키의 값
(obj[key]) : 요소 값
참고
for...in은 자바스크립트에서 객체의 속성을 반복하는 데 사용되는 반복문입니다.
for...in 문은 객체의 속성을 열거하고 해당 속성 값에 대한 작업을 수행합니다.
06. 결괏값을 작성하시오.
{
let num = 0;
while( true ){
num++;
if( num == 3 ){
continue;
}
if( num > 6 ){
break;
}
console.log(num);
}
}
😎결과 확인하기
오답
while이 true이면 코드는 순서대로 실행이 된다.
num이라는 변수를 0으로 설정해준 다음에 while 루프가 시작된다.
루프의 조건식은 항상 true여서 이 루프는 무한 반복된다.
루프의 첫 번째 줄에서 num을 증가시키고, 그 다음 if문이 나오는데, num이 3이면 continue문이 실행된다. continue는 현재 루프를 중지하고 다음 반복을 시작한다.
따라서 num이 3일 때는 아무것도 출력되지 않는다.
continue 문 이후로는 실행되지 않고, while 루프의 조건식으로 다시 돌아간다.
num이 4, 5 일 때는 아무런 문제 없이 출력이 된다.
그리고 다시 if문이 나오는데 num이 6보다 크면 break문이 실행된다
break는 루프를 완전히 종료시키기 때문에 num이 6일 때는 6만 출력하고, 루프가 종료된다.
07. 결괏값을 작성하시오.
{
for(let i=1; i<=5; i++){
console.log(i);
if(i == 3){
break;
}
}
}
😎결과 확인하기
오답
for 루프가 1부터 5까지 값을 갖는 변수 i를 초기화하면서 시작된다. 루프의 첫 번째 줄에서는 i 값을 출력한다. 그 다음 if문이 나오는데 i가 3이면 break문이 실행된다. break는 가장 가까운 루프를 완전히 종료한다. 따라서 i 값이 3일 때는 1, 2 3까지만 출력하고, 루프가 종료된다.
08. 결괏값을 작성하시오.
{
let num = 0;
while (num < 20){
num++;
console.log(num);
if(num == 1){
break;
}
}
}
😎결과 확인하기
오답
while을 사용해서 num 값이 20보다 작은 동안 계속 실행이 된다. 루프의 첫 번째 줄에서 num을 증가시키고, 그 다음에 num 값을 출력한다. 그리고 if문이 나오는데, num 값이 1이면 break문이 실행된다. brack는 가장 가까운 루프를 완전히 종료한다. 따라서 num 값이 1일 때는 1만 출력하고, 루프가 종료된다.
09. 결괏값을 작성하시오.
{
let num = 100;
switch(num){
case 100 :
console.log("100");
break;
case 200 :
console.log("200");
break;
default :
console.log("300");
}
}
😎결과 확인하기
10. 결괏값을 작성하시오.
{
func = () => {
const str = "함수가 실행되었습니다.";
return str;
}
console.log(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 값을 받아와 처리한다. 함수안 첫 번째 if문에서는 num 값이 존재할 때 처리하고 그 다음 if문에서는 num 값이 2일 때 direct 값을 1 증가시킨다. 하지만 이 코드에서 galley 함수를 호출할 때 인자로 2를 넘겨줘서 num 값이 2가 된다. 따라서 if(num)문은 항상 참이 되고, 그 다음 if(num == 2) 문이 실행된다. 그래서 direct 변수 값은 1에서 2가 되고, 마지막 줄에서 direct 값이 출력되기 전에 galley 함수가 실행되지 않는다.
12. 결괏값을 작성하시오.
{
let sum = 0;
for(var i=1; i<=100; i++) {
sum += i;
};
console.log(sum);
}
😎결과 확인하기
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
}
😎결과 확인하기
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
}
😎결과 확인하기
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);
}
😎결과 확인하기
16. 다음의 결괏값을 작성하시오!
{
const char = ["J","A","V","A","S","C","R","I","P","T"];
for(let i=9; i>=0; i--){
console.log(char[i]);
}
}
😎결과 확인하기
오답
char 배열을 const(상수)로 선언해주고 for 루프가 9부터 0까지 i 값을 갖는 변수로 초기화되면서 시작된다. 루프의 첫 번째 줄에서는 char 배열의 i 번째 요소 값을 출력한다. 그래서 char 배열의 요소를 역순으로 출력함.
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);
}
😎결과 확인하기
18. 다음의 결괏값을 작성하시오!
{
let i = 1;
while(i > 5){
console.log(i);
i++;
}
console.log(i);
}
😎결과 확인하기
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)
}
😎결과 확인하기
20. 다음의 결괏값을 작성하시오!
{
let a, b, result;
a = 7, b = 4
result = a & b;
console.log(result)
}
😎결과 확인하기
오답
AND(&) 연산자는 a와 b의 2진수 값이 각각 1인 경우에만 결과 값의 비트가 1이 되는 연산이다.
7을 2진수로 변환하면 0111이고 4를 2진수로 변환하면 0100이다.
둘 다 1이되는 값이 2의 2승이기 때문에 결과는 4이다.