티스토리 뷰
Q. 1번
// 문제1) 다음 코드의 출력 결과는 ?
const num = 1234;
const str = '1234';
const a = num-'10';
const b = str-10;
console.log( a, typeof(a) );
console.log( b, typeof(b) );
// 정답)
// 1224 number
// 1224 number
Q. 2번
// 문제2) 다음 코드의 출력 결과는 ?
let a = 0;
let b = 0;
let c = 0;
if( a === 1 && b++ > 0 && ++c > 0){
console.log('Tiger');
}else{
console.log('Lion');
}
console.log(a, b, c);
// 정답)
// Lion
// 0, 0, 0
Q. 3번
// 문제3) sum의 출력 결과는 ?
const ar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let sum=0;
for (let i = 0; i < ar.length; i++) {
sum += i;
ar.pop()
}
console.log(sum);
// 정답)
// 10
Q. 4-1번
-> K&R 스타일과 BSD 스타일에 대해서 설명하세요.
- K&R 스타일
- 블록을 여는 괄호가 블록 시작행의 끝에 있다는 점이 특이하며 명령은 블록 안쪽으로 들여쓴다. 조건절을 주석 처리할 때 약간 불편한 면이 있으나 if를 블록 시작으로 보므로 블록 구조 파악에는 큰 무리가 없다. 이 스타일의 가장 큰 장점은 여는 괄호가 한 줄을 차지하지 않아 수직으로 더 많은 코드를 볼 수 있다는 점이다.
// K&R 스타일
if (k == 5) {
for (i = 0;i < 10;i++) {
if (ar[i] == 10) {
func(ar[i]);
} else {
proc(ar[i]);
}
}
}
- BSD 스타일
- GNU 스타일과 K&R 스타일의 장점만을 취한다. 여는 괄호가 별도의 줄에 작성되어 소스가 좀 더 길어지는 담점이 있지만 블록 구조가 더 잘보이며 블록이 if와 같은 레벨에 있어 들여쓰기도 심하지 않다. 블록의 시작과 끝이 하눈에 들어오고 수평 위치가 같아 유지, 보수에는 가장 유리한 스타일이다.
// BSD 스타일
if (k == 5)
{
for (i = 0;i < 10;i++)
{
if (ar[i] == 10)
{
func(ar[i]);
}
else
{
proc(ar[i]);
}
}
}
Q. 4-2번
문제4-2) apple 과 num을 조합하여 정수형 변수를 만들고자 한다. 표기법에 맞게 변수명을 작성하세요.
카멜 표기법 : appleNum
-> 뒤에 있는 단어의 앞 문자를 대문자로 표기
헝가리안 표기법 : IappleNum
-> 맨 앞에 자료형을 나타내는 문자
파스칼 표기법 : AppleNum
-> 단어 첫글자 모두 대문자
팟홀표기법(스네이크 표기법) : apple_num
-> 단어와 단어 사이에 _
케밥 표기법 : apple-num
-> 단어와 단어 사이에 -
Q. 5번
// 문제5) 다음 코드의 출력 결과는 ?
// isNaN 안에 있는 것이 숫자만 존재하는 냐에 따에 boolean 값을 return 한다.
console.log( isNaN(10) );
console.log( isNaN('10') );
console.log( isNaN('$10') );
console.log( isNaN('10원') );
// 정답)
// false
// false
// true
// true
Q. 6번
- 자료형의 값 복사(깊은 복사)
- JS는 기본 자료형(숫자, 문자열, boolean)의 값을 복사 할 때 값을 완전히 복사한다.
- 따라서 =을 이용하여 값 복사를 쉽게 할 수 있다.
- 객체의 참조 복사(얕은 복사)
- 객체에 변수를 저장하면, 실제 값을 저장하는 것이 아니라 객체를 메모리 어딘가에 만들고, 객체의 참조(위치 값)을 저장하게 된다. 따라서, 객체(배열 포함)의 경우 =을 이용하여 복사하면, 참조 복사만 가능하다.
- 객체의 깊은 복사
- 객체의 깊은 복사를 하기 위해서는 새로운 객체를 만들고, for in 반복문을 통해 원복 객체에 반복문을 돌리며, 키와 값을 하나하나 옮겨야 한다.
// 문제6) obj1의 출력 결과를 나타내고, 주목이라고 된 코드의 복사를 무슨 복사라고 할까요
let obj1 = {
a:10,
b:20,
}
let obj2 = obj1; // 주목
obj2.a = 30;
obj2.b = 40;
console.log(obj1);
// 정답)
// 출력 결과: {a : 30, b : 40}
// ( 얕은 ) 복사
Q. 7번
- Q. 6번의 복사의 개념을 이해하면 풀수 있는 문제
// 문제7) 두번의 배열 ar 출력 결과값은 ?
let ar = [10, 20, 30, 40];
let br = ar;
br[0] = 99
console.log(ar); // 출력1
br = [50, 60, 70, 80];
console.log(ar); // 출력2
// 정답)
// 출력1
// [99, 20, 30, 40]
// 출력2
// [99, 20, 30, 40]
Q. 8번
// 문제8) 다음 함수는 데이타 교환이 일어 나지 않는다. 데이타 교환을 위하여 한줄의 코드를 작성하세요.
function f1( a, b ){
let t = a;
a = b;
b = t;
}
let a=10, b=20;
f1( a, b )
console.log(a, b);
// 출력결과 : 10, 20
// 여기에 한줄 코드를 작성하세요. 한줄, 한줄, 한줄 입니다.
// 정답)
[a,b] = [b,a]
console.log(a, b);
// 출력결과 : 20, 10
Q. 9번
// 문제9) 출력결과가 잘못된 문장은 ? (답은 1개)
// 1.
let ar = [10,20,30];
console.log(ar);
// 출력결과 : [ 10, 20, 30 ]
// 2.
let br = Array();
console.log(br);
// 출력결과 : []
// 3. 이것은 배열의 item 값을 생성해주는 것이다. 10개의 크기 만큼 할당해줌
let cr = Array(10);
console.log(cr);
// 출력결과 : [ 10 ] -> 틀림
// 출력결과 : [ <10 empty items> ] -> 정답
// 4.
let dr = Array(10, 20, 30);
console.log(dr);
// 출력결과 : [ 10, 20, 30 ]
// 정답) 3
Q. 10번
- 다음 코드는 2의 승수에 해당되면 true, 해당되지 않으면 false를 반환하는 코드이다.
- ! 연산자와 & 연산자의 이해가 필요
// 문제10) 반복문의 결과값에 알맞은 불린값을 선택하세요.
for(let a=1; a<=9; a++)
{
console.log( a, !( a & (a-1)) );
}
// 결과( 각번호에 맞는 블린을 선택하세요 )
// 1 true
// 2 true
// 3 false
// 4 true
// 5 false
// 6 false
// 7 false
// 8 true
// 9 false
2019.08.30(금)
JS - 쉽지만 자주 틀리는 문제 2
'Java Script' 카테고리의 다른 글
[JAVA SCRIPT] JS문법 - 쉽지만 틀리는 문제 1 (0) | 2019.08.29 |
---|---|
[JAVA SCRIPT] JS - Koa 서버 사용(라우팅), ctx.qurty (0) | 2019.08.20 |
[JAVA SCRIPT] JS - Promise() 복습 (0) | 2019.08.20 |
[JAVA SCRIPT] JS - new Promise() 문법 다단계 뿌시기 (0) | 2019.08.19 |
[JAVA SCRIPT] JS - setTimeout(), new Promise() 문법 (0) | 2019.08.19 |
댓글