1. [송이] 다음 코드의 결과를 예측하세요!2. [송이] 위 코드가 정상적으로 작동하는 이유를 설명하세요!3. [윤] 다음의 내용을 같이 논의해보아요~!4. [윤] 질문에 답해주세요!
1. [송이] 다음 코드의 결과를 예측하세요!
const obj1 = { name: '송이', age: 20, }; const obj2 = { name: '윤', age: 26, }; let ptr1 = obj1; let ptr2 = ptr1; ptr2 = obj2; obj1.age = 26; console.log(ptr1, ptr2);
정답

윤
obj1 = { name: '송이', age: 26, }; obj2 = { name: '윤', age: 26, };
2. [송이] 위 코드가 정상적으로 작동하는 이유를 설명하세요!
if(true) a = 3; else { if (a > 2) b = 3; else b = 5; }
정답
자바스크립트 언어 설계엔 else if가 존재하지 않는다. 즉 else 뒤 문이 if 단문이 위치하였고, 단문은 중문으로 바꾸어도 오류가 발생하지 않는다.
윤
- if문, else문은 중문 단문 모두 올 수 있다
- if는 else if문은 없고 if와 else문만 있다 else뒤의 if~else~문을 하나의 단문으로 보기 때문에 정상 동작한다
놓친 부분 - 단문은 중문으로 바꾸어도 오류가 발생하지 않는다
3. [윤] 다음의 내용을 같이 논의해보아요~!
제가 참고한 js의 메모리 모델에 관한 자료 입니다
원시타입은 불변하기 때문에 재할당 시 기존 메모리에서 값만이 바뀌는 것이 아니라
메모리 주소 또한 바뀐 후 값이 재할당되고,
다른 변수(식별자)에 같은 값을 할당할 시에는 각각의 메모리가 생기는게 아닌
해당 값이 담긴 메모리 주소를 같이 바라보고 있는 걸로 알고 있습니다!
(= 메모리에 같은 값이 중복될 수 없다)
의문점
- 하지만 강의에 나온 내용을 보면 B변수의 값(&A → &k)이 변했지만 26번 메모리는 그대로이고 값이 변하는 것을 볼 수 있습니다
- 또한 C와 D에 같은 값(&A === 11)이 할당되었지만 각각 다른 메모리에 저장되었습니다(17, 36)


3. js에서 원시 타입 값을 가진 변수를 다른 변수에 할당할 경우
let myNumber = 23
let newVar = myNumber
3-1.
23이라는 값이 newVar에 복사되는 건지?
3-2.
아니면
myNumber
의 메모리 주소가 newVar에 복사되고,
newVar의 메모리는 따로 생성되는게 아닌 23이 들어있는 메모리의 주소를
newVar
도 같이쓰는 것인지3-3.
2번이 맞다면 변수에 다른 변수를 할당하는 것은 일반적인 변수 값 할당이랑은 다른 것인지??
(예- newVar라는 식별자에
myNumber
메모리 주소가 들어왔네? 그럼 newVar너도 그 주소에 연결해줄게 ~ 이런 과정인가..?)이게 js와 c언어의 차이점인건지..
아니면 강사님이 이해하기 쉽게 설명하신건지 모르겠네요 ㅠㅠ
너모 혼란스러워요..
4. [윤] 질문에 답해주세요!
1. 리터럴은 무엇을 의미할까요?? 2. const f = (a) => {} 는 어떤 의미로 해석될 수 있을까요(2가지)? 3. 위 코드에서 객체 리터럴을 반환하고 싶다면 어떻게 해야할까요? 4. 3;5;6;을 실행했을 때 오류가 안나는 이유가 무엇일까요? 5. 특정 sync flow를 반복해서 쓰기 위한 방법은 어떤 것들이 있을까요?
정답
- 더 이상 나눌 수 없는 객체나 값의 최소 표현 단위
- 빈 오브젝트 리터럴을 반환한다, 함수의 바디이다
- 오브젝트를 반환하고싶다면 ()로 감싸주면 값의 의미가 된다
- 하나의 값(리터럴)식도 식문으로 인정해주기 때문이다
- 함수와 클래스
송이
- (더 이상 나눌 수 없는)값 또는 객체의 표현 2. 객체 or 함수 body 3. ({}) 4. 자바스크립트에선 식을 문처럼 취급해주기 때문이다. 5. 제어문을 사용한다. → 함수와 클래스로 “특정" 구문을 반복사용할수있다!