역대급 난이도. ㅋ
자바스크립트 시험 오답노트? 레츠기릿.
헷갈리는 문제가 넘 많았지만 어쨋든 공부 열심히 안 했으니까.. 오답노트를 써보며 다시 열공해봅시다!
자바스크립트 오답노트
01. 결괏값을 작성하시오.
{
(function(){
console.log("함수가 실행되었습니다.");
})();
}
✔답 확인하기
함수가 실행되었습니다.
02. 결괏값을 작성하시오.
{
function func(str = "함수가 실행되었습니다."){
document.write(str);
}
func();
}
✔답 확인하기
함수가 실행되었습니다.
03. 결괏값을 작성하시오.
{
let sum = 0;
for(var i=1; i<=10; i+=2) {
sum += i;
};
document.write(sum);
}
✔답 확인하기
25
04. 다음의 결괏값을 보고 빈칸을 작성하시오.
{
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
05. 다음의 결괏값을 보고 빈칸을 작성하시오.
{
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);
//100
//200
//javascript
//jquery
}
✔답 확인하기
...objA, ...objB
06. 다음의 결괏값이 나오도록 보기에서 빈칸에 해당되는 것을 모두 고르시오
{
if( _____ ){
document.write("조건문이 실행되었습니다.(true)");
} else {
document.write("조건문이 실행되었습니다.(false)");
}
//document.write("조건문이 실행되었습니다.(false)");
//보기
//true, false, 1, "1", "", 0, null, undefined, [], {}
}
✔답 확인하기
false, "", 0, null, undefined
07. 다음의 if문은 삼항 연산자로 변경하시오.
{
if( num == 100 ){
document.write("true");
} else {
document.write("false");
}
}
✔답 확인하기
(num == 100) ? document.write("true) : document.write("false");
08. 다음의 결괏값을 작성하시오!
{
for(var i=1; i<=1; i++){
document.write(i);
for(var j=1; j<=5; j++){
document.write(j);
}
}
}
✔답 확인하기
1 12345
오답노트
여기서 실수한 부분은 조건식이 i<=1 인데 문제를 제대로 안 읽고 i<=5인줄 알았습니다... for문 안에 for문이 들어가있는
중첩 for문으로 i가 1일때 j의 값은 12345가 됩니다. 문제를 잘 보고 풉시다!
중첩 for()문 : for문 안에 for문이 있는 방식으로 여러 개의 데이터를 불러올 수 있습니다.
09. 다음의 결괏값을 보고 빈칸을 작성하시오!
{
const num = [100, 200, 300, 400, 500];
for(let i=0; i<num.length; i++){
document.write(_______);
}
//100 200 300 400 500
}
✔답 확인하기
num[i]
오답노트
배열을 먼저 만들어주고, for문을 통해 i값을 지정해준뒤 배열 값을 출력하는 문제였습니다. 여기서 배열만 불러온다면 document.write(num);이 맞지만, 배열에 있는 요소값을 출력해주기 위해 document.write(num[i]);로 출력해주었습니다.
배열의 데이터를 불러오는 방법을 다시 공부해봅시다!
배열 : 데이터 불러오기_for()문: 기본적인 반복문 중 하나입니다. 대입은 초기값, 조건식, 실행문, 증감식 순으로 하면 이해하기 편합니다.
예시 코드
const arr = [100, 200, 300, 400, 500, 600, 700, 800, 900];
//기존의 방법을 활용하면 되지만, 데이터가 많아질 경우 복잡해질 수 있습니다.
//console.log(arr[0]);
//console.log(arr[1]);
//console.log(arr[2]);
//console.log(arr[3]);
//console.log(arr[4]);
//console.log(arr[5]);
//console.log(arr[6]);
//console.log(arr[7]);
//console.log(arr[8]);
// for()문을 쓰면 번거로움 없이 값을 불러올 수 있습니다.
// for()문 공식 :for(초기값; 조건식; 증감식;){
//실행문
//}
for(let i=0; i<9; i++){
console.log(arr[i]);
}
10. 다음의 결괏값을 보고 빈칸을 작성하시오!
{
const num = [100, 200, 300, 400, 500];
num.forEach(function(el){
document.write(________);
});
//100 200 300 400 500
}
✔답 확인하기
el
11. 다음을 보고 리턴값을 생략하여 한줄로 표현하시오!
{
const func = str => {
return str;
}
}
✔답 확인하기
const func = str => str;
12. 다음의 결괏값을 보고 빈 칸을 채우시오.
{
const num = [100, 200, 300, 400, 500];
for(let index of _____ ){
document.write(index);
}
//결과값
//100 200 300 400 500
}
✔답 확인하기
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();
}
✔답 확인하기
true false
오답노트
이번 문제는 연산자에 관한 문제였습니다. 연산자에 대해 공부를 소홀히 하였기에.. 다시 블로그에 정리했던 걸 되새겨봅시다!!!
여기서 나온 연산자는 일단 논리연산자와 비교연산자, 대입연산자가 있습니다.
논리 연산자 : 주어진 논리식을 판단하여, 참(true)과 거짓(false)을 반환합니다.
- && : 논리식이 모두 참이면 참을 반환함.(논리 AND 연산)
- || : 논리식 중에서 하나라도 참이면 참을 반환함. (논리 OR 연산)
- ! : 논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함. (논리 NOT 연산)
대입 연산자 : 변수에 값을 대입할 때 사용하는 이항 연산자이며, 피연산자들의 결합 방향은 오른쪽에서 왼쪽입니다.
- = : 왼쪽 피연산자에서 오른쪽 피연산자의 값을 대입함.
비교 연산자 : 피연산자 사이의 상대적인 크기를 판단하여 참(true)과 거짓(false)을 반환합니다. 피연산자가 둘 다 숫자면 해당 숫자를 서로 비교하고, 둘 다 문자열이면 문자열의 첫 번째 문자부터 알파벳 순서대로 비교합니다.
- != : 왼쪽 피연산자와 오른쪽 피연산자의 값이 같지 않으면 참을 반환함.
그러니 해당 문제는 일단, i는 5, j는 4, k는 1, l, m 이렇게 변수를 지정해주었습니다.
그리고 이제 l의 값을 연산자를 통해 출력했는데, || (OR 연산자)를 사용해 둘 중 하나라도 참이면 참을 반환하였습니다. 그런데 여기서 또 != 연산자를 통해 참인지 거짓인지 판단하는데요. j != 0; 은 값이 같지 않기 때문에 참을 반환합니다. 그러니 l은 true가 됩니다!
m의 값도 연산자를 통해 출력했습니다. 이번엔 && (AND 연산자)를 사용했는데요. AND 연산자는 모두 참이면 참을 반환하는 것입니다. 하나라도 거짓이 되면 거짓인 거죠!! 그 안의 값들을 살펴보면 j <= 4는 참, k < 1은 거짓이기 때문에 결국 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);
}
✔답 확인하기
100 200 300 400 500 600 / 600 100 200 300 400 500
15. 다음의 결괏값을 작성하시오.
{
const obj = {
a: 100,
b: 200
};
for(let key in obj) {
console.log(key);
}
}
✔답 확인하기
a b
16. 다음의 결괏값을 작성하시오.
{
let num = 0;
while(false){
num++;
if( num == 3 ){
continue;
}
if( num > 6 ){
break;
}
}
console.log(num);
}
✔답 확인하기
0
17. 다음의 결괏값을 작성하시오.
{
let a, b, result;
a = 7, b = 4
result = a & b;
console.log(result, a, b)
}
✔답 확인하기
4 7 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);
}
✔답 확인하기
8 2 7 4
오답노트
이번 문제는 전치, 후치 연산자에 관한 문제였습니다.
연산자 (전치, 후치) :
- 전치 연산자: 변수의 값을 먼저 증감시키고, 그 값을 반환합니다.
- 후치 연산자: 변수의 값을 반환한 후, 그 값을 증감시킵니다.
전치 연산자와 후치 연산자는 변수의 값을 변경하기 때문에, 코드 작성 시 주의해서 사용해야 합니다. 특히, 여러 개의 증감 연산자가 함께 사용될 경우, 예상치 못한 결과가 발생할 수 있습니다. 또한 우선순위에 따라 실행이 달라지므로 그 점도 잘 살펴보아야 합니다.
result 값을 틀려버렸는데요..! 아무래도 전치 후치를 잘못 계산해서 실수한 것 같습니다.. ㅠ
a = 1, b = 2, b = 3
++a 는 전치니까 증감해서 2,
b++ 는 후치니까 변수의 값만 반환해 2,
++c 는 전치니까 증감해서 4.
그러니 result값은 모두 다 더해서 8이 됩니다.
그리고 a의 값은 증감하고 반환해서 2,
b+c 값은 증감하고 반환해서 3+4 = 7,
c의 값은 증감하고 반환해서 4.
그러니 답은 8, 2, 7, 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)
}
✔답 확인하기
1 90
20. 다음의 결괏값을 작성하시오.
{
function func(num1, num2){
if(num1 > num2) return num1
else return num2
}
console.log(func(10, 23) + func(40, 50))
}
✔답 확인하기
73
헷갈리는 문제들도 다시 한 번 살펴보며 공부해봅시다~!