1. 1. 1. index.html에서 main.js를 로드하기 위한 코드를 완성하라. 단 index.html은 프로젝트 루트에 위치하고 main.js는 src/js 디렉터리에 위치한다.(6점)
  2. 2. 2. 변수란 무엇인가?(6점)
  3. 3. 3. JavaScript의 자료형을 모두 나열하라.(6점)
  4. 4. 4. var foo = 42 / -0; console.log(foo); 의 결과를 기술하라.(6점)
  5. 5. 5. 변수 선언 시 var 키워드를 생략할 수 있다. 이때 변수는 전역 변수가 되는데 그 이유는 무엇인가?(6점)
  6. 6. 6. 변수 호이스팅이 발생하는 이유를 설명하라.(8점)
  7. 7. 7. var x = 5; 일 때, console.log(x != ‘5’);의 결과는 무엇인가?(6점)
  8. 8. 8. var foo = false && ‘Cat’; 일 때, foo의 값은 무엇인가?(6점)
  9. 9. 9. console.log(!!null); 의 결과는 무엇인가?(6점)
  10. 10. 10. 0에서 10미만까지 홀수만을 큰수부터 출력하는 코드를 for문을 사용하여 작성하라.(8점)
  11. 11. 11. 0에서 10미만까지 3의 배수를 큰수부터 출력하는 코드를 while문을 사용하여 작성하라. 단 0은 출력하지 않는다.(6점)
  12. 12. 12. 문자열을 값으로 갖는 name 프로퍼티와 name 프로퍼티를 출력하는 sayName 메소드를 갖는 객체 obj를 생성하라. 단 객체 리터럴 방식을 사용한다.(8점)
  13. 13. 13. 문자열을 값으로 갖는 name 프로퍼티와 name 프로퍼티를 출력하는 sayName 메소드를 갖는 객체 obj를 생성하라. 단, 생성자 함수 방식(함수명 Person)을 사용한다.(8점)
  14. 14. 14. var person = { ‘my-name’: ‘Lee’ }; 일 때, my-name 프로퍼티의 값을 ‘Kim’으로 변경하고 console.log()를 사용하여 출력하는 코드를 작성하라.(6점)
  15. 15. 15. pass-by-reference와 pass-by-value의 차이점에 대하여 설명하라.(8점)

TIL_171010 javascript기초 테스트

1. index.html에서 main.js를 로드하기 위한 코드를 완성하라. 단 index.html은 프로젝트 루트에 위치하고 main.js는 src/js 디렉터리에 위치한다.(6점)

1
2
3
4
5
<script src=”src/js/main.js”></script>
또는
<script src=”./src/js/main.js”></script>
<script src=”/src/js/main.js”></script>

2. 변수란 무엇인가?(6점)

변수는 위치(주소)를 기억하는 저장소이다번문제 위치란 메모리 상의 주소(address)를 의미한다. 즉 변수란 메모리 주소(Memory address)에 접근하기 위해 사람이 이해할 수 있는 언어로 지정한 식별자(identifier)이다.

3. JavaScript의 자료형을 모두 나열하라.(6점)

  • 기본 자료형 (primitive data type)
    Boolean, null, undefined, Number, String, Symbol (ECMAScript 6에서 추가)
  • 객체형 (Object type)
    Object

4. var foo = 42 / -0; console.log(foo); 의 결과를 기술하라.(6점)

-Infinity

5. 변수 선언 시 var 키워드를 생략할 수 있다. 이때 변수는 전역 변수가 되는데 그 이유는 무엇인가?(6점)

자바스크립트 엔진은 변수 할당문을 만나면 해당 스코프 내에서 해당 변수의 선언을 검색한다. 이때 검색에 실패하면 상위 스코프에서 해당 변수의 선언을 검색한다. 최상위 스코프인 전역에서도 해당 변수 선언의 검색에 실패한 경우, 자바스크립트 엔진은 해당 변수를 전역 변수로 간주하고 선언하기 때문이다.

6. 변수 호이스팅이 발생하는 이유를 설명하라.(8점)

var 키워드로 선언된 변수는 선언 단계와 초기화 단계가 한번에 이루어진다. 즉, 스코프에 변수가 등록되고 변수는 메모리에 공간을 확보한 후 undefined로 초기화된다. 따라서 변수 선언문 이전에 변수에 접근하여도 Variable Object에 변수가 존재하기 때문에 에러가 발생하지 않는다. 다만 undefined를 반환한다.

7. var x = 5; 일 때, console.log(x != ‘5’);의 결과는 무엇인가?(6점)

false

8. var foo = false && ‘Cat’; 일 때, foo의 값은 무엇인가?(6점)

false

9. console.log(!!null); 의 결과는 무엇인가?(6점)

false

10. 0에서 10미만까지 홀수만을 큰수부터 출력하는 코드를 for문을 사용하여 작성하라.(8점)

1
2
3
for (var i = 0; i >= 0; i--) {
if (i % 2 !== 0) console.log(i);
}

11. 0에서 10미만까지 3의 배수를 큰수부터 출력하는 코드를 while문을 사용하여 작성하라. 단 0은 출력하지 않는다.(6점)

1
2
3
4
5
var i = 9;
while (i > 0) {
if(i % 3 === 0) console.log(i);
i--;
}

12. 문자열을 값으로 갖는 name 프로퍼티와 name 프로퍼티를 출력하는 sayName 메소드를 갖는 객체 obj를 생성하라. 단 객체 리터럴 방식을 사용한다.(8점)

1
2
3
4
5
6
7
var obj = {
name: 'Lee',
sayName: function() {
console.log(this.name);
}
};
obj.sayName();

13. 문자열을 값으로 갖는 name 프로퍼티와 name 프로퍼티를 출력하는 sayName 메소드를 갖는 객체 obj를 생성하라. 단, 생성자 함수 방식(함수명 Person)을 사용한다.(8점)

1
2
3
4
5
6
7
8
function Person() {
this.name = 'Lee';
this.sayName = function () {
console.log(this.name);
};
}
var obj = new Person();
obj.sayName();

14. var person = { ‘my-name’: ‘Lee’ }; 일 때, my-name 프로퍼티의 값을 ‘Kim’으로 변경하고 console.log()를 사용하여 출력하는 코드를 작성하라.(6점)

1
2
3
var person = { 'my-name': 'Lee' };
person['my-name'] = 'Kim';
console.log(person['my-name']);

15. pass-by-reference와 pass-by-value의 차이점에 대하여 설명하라.(8점)

  • pass-by-value
    기본자료형의 값은 값(value)으로 전달된다. 즉, 복사되어 전달된다. 기본자료형은 값이 한번 정해지면 변경할 수 없다.(immutable)
  • pass-by-reference
    참조형(object type)의 값은 실제 객체가 아닌 객체에 대한 참조값이다. 즉, 참조형을 할당하면 객체가 복사되어 전달되는 것이 아니라 참조값(reference)가 전달된다. 객체는 변경 가능한 프로퍼티들의 집합이다.