공부의 기록/자바 풀 스택 : 수업내용정리

자바 풀 스택 12/3 오후 기록 009-2

파티피플지선 2024. 12. 3. 17:23

<14:30 5교시>

페이지가 로딩되는 시점에 sing이라는 함수가 정의됨
함수를 만들면, 이 함수에 대한 참조값(key)이 알아서 발급되고, 이 참조값(key)이 변수나 상수에 들어간다
함수 sing()이 호출되면서 undefined 값이 대입됨
함수 sing을 호출하여 b에 이미 만들어져 있던 함수를 복사해서 만들어 넣어줌
이 위에서 만들어진 함수는 1개일 뿐, sing과 b는 다른 참조값(key값)을 보유한 서로 다른 상자일뿐

마찬가지 개념으로, 오브젝트가 만들어질 때도 마찬가지이다. 변수는 이름이 달라도 동일한 오브젝트를 참조한 꼴이라서 여기에서 오브젝트는 한개만 만들어진 상황.
 
<수업 때 생각 났던 거 메모>
수업에선 number type, string type, boolean type이 하나의 명확한 값이 대응되어 참조값(key값)을 부여할 필요가 없다는 느낌으로 말씀하셨는데, 이 참조값(key값)의 개념을 확장 시키면 숫자나 문자열이나 부울대수 타입도, 그 자체가 각각 하나의 참조값으로서 객체일지도 모른다는 생각이 든다는 거지.

챗 지피티 선생님에게 물어봤더니 내 생각이 개소리였다는 것을 알게 되었다. number, string, boolean type은 객체라고 부르지 않고 원시 타입이라고 부르더라.

더보기

JavaScript의 데이터 타입은 객체와 원시 타입(Primitive Type)으로 크게 나눌 수 있습니다. 이 중 원시 타입은 객체가 아니고, 객체 타입만 객체라고 할 수 있습니다.

자세히 설명하자면:

1. 원시 타입 (Primitive Types)

원시 타입은 값 자체가 고정되어 있고, 변경할 수 없는 데이터입니다. 자바스크립트에서 원시 타입은 다음과 같습니다:

  • String (문자열)
  • Number (숫자)
  • BigInt (큰 정수)
  • Boolean (불리언)
  • undefined (정의되지 않은 값)
  • Symbol (심볼)
  • null (값 없음)

이들은 객체가 아닙니다. 예를 들어, Number나 String은 값을 가지고 있지만, 그 값 자체는 객체가 아니라 "원시값"입니다. 원시 값은 직접적으로 메서드나 속성을 가질 수 없으며, 객체처럼 프로퍼티나 메서드를 추가할 수 없습니다.

2. 객체 타입 (Object Types)

객체는 여러 값을 저장할 수 있는 복합적인 자료형입니다. 객체 타입에는 배열, 함수, Date, RegExp 객체 등 다양한 종류가 있습니다. 객체는 값이 아닌 참조를 가지고 있기 때문에, 참조에 의해 여러 값을 포함하거나 복잡한 구조를 가질 수 있습니다.

객체의 예:

  • Object (일반 객체)
  • Array (배열)
  • Function (함수)
  • Date (날짜)
  • RegExp (정규 표현식)

이들은 모두 객체입니다. 자바스크립트에서 객체는 "참조 타입"이라고도 부르며, 값이 아닌 "참조"로 저장되기 때문에 객체 자체에 메서드를 추가하거나 수정할 수 있습니다.

결론

모든 JavaScript 데이터 타입이 객체라고 할 수는 없습니다. 원시 타입은 객체가 아니며, 객체 타입만 객체라고 할 수 있습니다.

 


 
우리가 소괄호에 작성해서 전달하는 값은 함수 안에서 사용할 준비를 하고 있다. 
커피 자판기에서 마실 때 동전을 넣어야 커피가 나오는 경우 : 호출하면서 값을 전달해야하는 함수
커피 자판기인데 서비스로 동전 안넣어도 커피가 나오는 경우 : 그냥 함수 호출하고 끝(호출된 함수는 undefined 로 바뀜)
 
함수 동작의 목적에 따라 함수를 호출한 값을 반환하기 위한 것인 경우도 있고, 호출하고 끝나는 경우도 있음
ATM기에서 돈을 인출해서 돈을 받을 수도 있고, 계좌이체 하고 끝일 수도 있음,.

 

 
 
 
 
 
 
<15:30 6교시>
 

 
 
 

console.log() 라는 빌트인 함수를 우리가 코딩하진 않았지만 log:function(){}의 중괄호 부분이 실행되는 것처럼,
위에 있는 코드는 myObj.getData() 형태로 함수를 호출할 수 있다.
 
 

 

 
 
<16:30 7교시>
■ 산술연산자
   : + 더하기, -빼기, * 곱하기, / 나누기, % 나머지
■ 대입연산자
   : =: 값 할당,+=: 더한 값을 할당,-=: 뺀 값을 할당,*=,/=,%=: 각각 곱, 나눗셈, 나머지 연산 후 값을 할당.
   : 대입 연산자는 산술연산자로 계산한 값을 대입하는 것의 줄임 표현이다.
■ 비교연산자
   : ==: 값만 비교, ===: 값과 타입 모두 비교, !=: 값이 다르면 참, !==: 값 또는 타입이 다르면 참. >: 크다, <: 작다, >=: 크거나 같다, <=: 작거나 같다.
   : 비교 연산자 중 ==과 ===의 차이, !=과 !==의 차이는 null과 undefined를 비교해보면 된다.

■ 논리연산자
   : && and 연산자는 모두가 true일 때만 결과가 true이고 어느 하나라도 false이면 결과가 false이다.
   : || or 연산자는 어느 하나라도 true 이면 true이고, 모두가 false일 때만 결과가 false이다.
   : ! not 연산자는 true인 값은 false로, false인 값은 true로 논리 값을 반전 시킨다.
 
■ 삼항 연산자 (생각보다 자주 쓰이는 연산자)  
1항? 2항 : 3항에 대해서,
조건인 1항의 값이 true면 2항이 결과값, 1항의 값이 false면 3항이 결과값
 
■ 증감 연산자
변수의 값을 1씩 증가시키거나 1씩 감소시키는 연산자
(prefix) ++변수/--변수 : 값을 먼저 증가/감소시키고 증가된 값을 반환
(postfix) 변수++/변수-- : 값을 반환하고, 반환한 값을 증가/감소시킴
 
<17:30 8교시>
오늘 배운 내용 정리&복습하기 + DB 복습하기