문제 1. 다음 코드의 실행결과는?

function Cat(name, age){
  this.name = name;
  this.age = age;
}

const tabby1 = Cat('nana', 7);
console.log(tabby1.name)

'nana'가 출력된다.

빈 문자열이 출력된다.

undefined가 출력된다.

오류가 발생한다.

문제 2. 다음 코드의 실행결과는?

(function(name){
  console.log(`hello ${name}`)
})('roto')

함수가 선언되기만 하고 아무 일도 일어나지 않는다.

'hello'만 출력이 된다.

'hello roto'가 출력된다.

오류가 발생한다.

문제 3. 다음 코드의 실행결과는?

var idiots = {
  name: 'idiots',
  genre: 'punk rock',
  members: {
    roto: {
      memberName: 'roto',
      play: function() {
        console.log(`band ${this.name} ${this.memberName} play start`)
      }
    }
  }
}

idiots.members.roto.play()

문제 4. 다음 코드를 실행하면 오류가 발생합니다.
오류가 발생하는 원인은 무엇이고
어떻게 해결할 수 있을까요?

function RockBand(members) {
  this.members = members;
  this.perform = function() {
    setTimeout(function() {
      this.members.forEach(function(member){
        member.perform();
      })
    }, 1000)    
  }
}

var theOralCigarettes = new RockBand([
  {
    name: 'takuya',
    perform: function() {
      console.log('Sing: a e u i a e u i')
    }
  }
]);

theOralCigarettes.perform();

문제 5. 다음 코드를 실행하면 숫자가 0부터 4까지 출력이 되지 않고 undefined가 다섯번 출력이
됩니다. 그 이유는 무엇일까요?

const numbers = [0, 1, 2, 3, 4]

for(var i = 0; i < numbers.length; i++) {
  setTimeout(function(){
    console.log(`[${i}] number ${numbers[i]} turn!`)
  }, i * 1000) 
}

문제 6. var, let, const의 차이는 무엇인가요?

문제 7. 클로져는 무엇인가요?