* Date

const now = new Date();
console.log("현재:", now.toString());
console.log("년:", now.getFullYear());
console.log("월:", now.getMonth() + 1);
console.log("일:", now.getDate());

const nowTime = now.getTime();
const birthTime = birthday.getTime();
const diffDays = Math.floor((nowTime - birthTime) / (1000 * 60 * 60 * 24));
console.log(`태어난 지 ${diffDays}일 지났습니다.`);

 

* String

const str1 = "안녕하세요 JavaScript";
const str2 = new String("안녕하세요 JavaScript");

console.log(str1);
console.log(str2);
console.log(str1 == str2);
console.log(str1 === str2);

// length : 문자열의 길이를 저장
console.log(str1.length);

// indexOf() : 특정 문자나 문자열이 처음으로 등장하는 위치를 인덱스로 변환
console.log(str1.indexOf("J"));
console.log(str1.indexOf("Java"));
console.log(str1.indexOf("java")); // -1 = 못찾음

// chatAt() : 특정 문자열에서 전달받은 인덱스에 위치한 문자를 반환
console.log(str1.charAt(7));

// included() : 특정 문자열에서 전달받은 문자열이 포함되어있는지 여부를 반환
console.log(str1.includes("Java"));
console.log(str1.includes("java"));

// substring() : 전달받은 시작 인덱스로부터 종료 인덱스 직전까지의 문자열을 추출
console.log(str1.substring(6)); // 6번부터 끝까지
console.log(str1.substring(6, 10)); // 6부터 9까지

// replace() : 원본 문자열의 일부를 전달받은 문자열로 치환
console.log(str1.replace("안녕하세요", "Hello")); // 안녕하세요 -> Hello로 치환

// split() : 구분자를 기준으로 나눈 후 나뉜 문자열을 하나의 배열에 저장
const str3 = "김사과,오렌지,반하나,이메론,배애리";
const students = str3.split(",");
console.log(students);
for (let i in students) {
  console.log(i, students[i]);
}

// trim(): 문자열의 앞 뒤 공백을 제거
const str4 = "    JavaScript     ";
console.log(`🤍${str4}🤍`);
console.log(`🤍${str4.trim()}🤍`);

// toUpperCase(), toLowerCase() : 문자열을 대,소문자로 변환
console.log(`❤${str.trim().toLowerCase()}❤`)
console.log(`❤${str.trim().toUpperCase()}❤`)

* String --> 시계 만들기

  <body>
    <script>
      function makeClock(){
        const date = new Date()
        yy = date.getFullYear()
        mm = date.getMonth()+1
        dd = date.getDay()
        hh = date.getHours()
        mm = date.getMinutes()
        ss = date.getSeconds()
        console.log(`${yy}-${mm}-${dd}-${hh}:${mm}:${ss}`)
      }

      let si
      function startClock(){
        si = setInterval(makeClock,1000)
      }
      function stopClock(){
        clearInterval(si)
        console.log('종료되었음')
      }
    </script>
    <button onclick="startClock()">start</button>
    <button onclick="stopClock()">finish</button>

  </body>

 

 

 

 

* Math

// min() : 가장 작은 수를 반환
console.log(Math.min()); // Infinity
console.log(Math.min(1, 10, -10, 1000, 0, "-100"));

// max() : 가장 큰 수를 반환
console.log(Math.max()); //-Infinity
console.log(Math.max(1, 10, -10, 1000, 0, "-100"));

// round() : 소수점 첫번째 자리에서 반올림하여 그 결과를 반환
console.log(Math.round(10.49));
console.log(Math.round(10.59));
console.log(Math.round(-10.5));
console.log(Math.round(-10.51));

// n번째 자리에서 반올림
let num = 123.4567;
console.log(num * 100);
console.log(Math.round(num * 100));
console.log(Math.round(num * 100) / 100);
// console.log(Math.round(num1 * 100) / 100);

console.log(num.toFixed(2));

// floor() : 소수점 첫번쨰 자리에서 소수점을 버림(숫자가 작아져야 함)
console.log(Math.floor(10.49));
console.log(Math.floor(10.5));
console.log(Math.floor(-10.51));
console.log(Math.floor(-10.5));

// cell() : 소수점 첫번째 자리에서 소수점을 올림(숫자가 커져야 함)
console.log(Math.cell(10.49));
console.log(Math.cell(10.5));
console.log(Math.cell(-10.51));
console.log(Math.cell(-10.5));

// random() : 0보다 크거나 같고 1보다 작은 무작위 소수를 반환
console.log(Math.random());
const r = Math.random()
console.log(r)
console.log(Math.cell(r*10))    // 1~10 무작위 수


 

'Web > JS' 카테고리의 다른 글

function & class 학습응용  (0) 2025.04.23
for문을 이용한 응용  (0) 2025.04.23
JS_조건문  (0) 2025.04.10
JS_연산자  (0) 2025.04.10
JS_변수형  (0) 2025.04.09
// 하나의 로직을 수행하는 동작의 묶음
// 데이터를 저장하지 않고 실행만 함
function Person(name, age) {
  this.name = name;
  this.age = age;
  this.greet = function () {
    console.log(`안녕하세요, 저는 ${this.name}입니다.`);
  };
}

// 데이터 + 메서드를 하나의 틀로 묶은 설계도 객체를 만들 수 있음
// 객체를 만들 수 있음.
const p1 = new Person("이메론", 30);
p1.greet();

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  greet() {
    console.log(`안녕하세요,${this.name}입니다.`);
  }
}

const P1 = new Person("김사과", 20);
P1.greet()
const P2 = new Person("반하나", 25);
P2.greet()

 

# function 과 class의 기능 차이는 뭘까?

=> 예를들면 function은 버튼 클릭 시 알림 띄우기  // class는 사용자, 게임 캐릭터, 쇼핑카트 처럼 상태를 가지게 하는 객체(ex. 장바구니에 목록 담기)

 

class Animal {
  constructor(name) {
    this.name = name;
  }
}

class Dog extends Animal {
    constructor(name,color){
        super(name)
        this.color = color
    }
    showInfo(){
        console.log(`${this.name}${this.color} 강아지입니다.`)
    }
}

const dog = new Dog('루시','흰색')
dog.showInfo()

console.log('--------------------------')

class Mathtool{
    constructor(num1,num2){
        this.num1=num1
        this.num2 = num2
    }
    static add(a,b){
        return a+b
    }
    subtract(){
        return this.num1-this.num2
    }
}

console.log('--------------------------')

class Product {
    name = "상품명 없음"
    price = 0
    static productName="컴퓨터"
    static productPrice="1,000,000원"

    showInfo(){
        console.log(`${this.name}의 가격은 ${this.price}원입니다.`)
    }
    static showStaticInfo(){
        console.log(`${this.productName}의 가격은 ${this.productPrice}원 입니다.`)
    }
}

const p = new Product()
p.showInfo()
Product.showStaticInfo()

 

get 과 set 이용

class User {
  constructor(name) {
    this._name = name;
  }
  get name() {
    console.log("값 읽는 중");
    return this._name;
  }

  set name(newName) {
    if (newName.length < 2) {
      console.log("이름은 두글자 이상 넣어야합니다.");
      return;
    }
    console.log("값 바꾸는 중..");
    this._name = newName;
  }
}
const user = new User("현지");

console.log(user.name); // getter 호출 -> 값을 읽는 중..
user.name = "김"; // setter 호출 -> 이름은 두글자 이상 넣어야합니다.
user.name = "김민지"; // setter 호출 -> 값을 바꾸는 중..
console.log(user.name); // 김민지
class Account {
    static accountCount = 0
    #balance = 0

    constructor(owner){
        this.owner = owner
        Account.accountCount++
    }
    get balane(){
        return this.#balance
    }
    set balance(value){
        console.log("직접 잔액을 설정할 수 없습니다.")
    }

    // 입금
    deposit(amount){
        if(amount >0){
            this.#balance += amount
            console.log(`${this.owner}${amount}원 입금되었습니다.`)
        }
    }
    // 출금
    withdraw(amount){
        if(amount <= this.balance){
            this.#balance -= amount
            console.log(`${this.owner}${amount}원 출금되었습니다.`)
        }else {
            console.log('잔액이 부족합니다.')
        }
    }
    static getAccountCount(){
        return `총 계좌수 : ${Account.accountCount}`
    }
}

const a1 = new Account("김사과");
a1.deposit(1000);
console.log(a1.balance); //getter의 balance 보는 방법
a1.balance = 5000; // setter 발동(잔액 설정을 임의대로 못하게)

a1.withdraw(300);

const a2 = new Account("반하나");
a2.deposit(2000);
console.log(a2.balance);

console.log(Account.getAccountCount());

'Web > JS' 카테고리의 다른 글

내장 객체 응용학습  (0) 2025.04.23
for문을 이용한 응용  (0) 2025.04.23
JS_조건문  (0) 2025.04.10
JS_연산자  (0) 2025.04.10
JS_변수형  (0) 2025.04.09
console.log("-----for문 구구단-----");

for (let dan = 2; dan <= 9; dan++) {
  for (let i = 1; i <= 9; i++) {
    console.log(`${dan} X ${i}=${dan * i}`);
  }
  console.log("------");
}

console.log("----while문 구구단----");
let dan = 2;
while (dan <= 9) {
  let i = 1;
  while (i <= 9) {
    console.log(`${dan}X ${i}=${dan * i}`);
    i++;
  }
  console.log("------------");
  dan++;
}

console.log("-------------------------");

let fruits = ["사과", "바나나", "오렌지"];

for (let i = 0; i < friuts.length; i++) {
  console.log(fruits[i]);
}

console.log("-------------------------");

for (let fruit of fruits) {
  console.log(fruit);
}

console.log("-------------------------");

fruits.forEach(function (fruit, index) {
  console.log(`${index}번째 과일 : ${fruit}`);
});

console.log("-------------------------");

let matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
];

for (let i = 0; i < matrix.length; i++) {
  for (let j = 0; j < matrix.length; j++) {
    console.log(`matrix [${i}][${j}]=${matrix[i][j]}`);
  }
}

console.log("-------------------------");
let menuBoard = [
  ["🍔 불고기버거", "🍟 감자튀김", "🥤 콜라"],
  ["🍔 치즈버거", "🌭 핫도그", "🍹 사이다"],
  ["🍔 새우버거", "🍗 치킨너겟", "🍵 녹차"],
];

for (let row = 0; row < menuBoard.length; row++) {
  let line = "";
  for (let col = 0; col < menuBorad[row].length; col++) {
    line += menuBoard[row][col] + `\t`;
  }
  console.log(lone)
}

'Web > JS' 카테고리의 다른 글

내장 객체 응용학습  (0) 2025.04.23
function & class 학습응용  (0) 2025.04.23
JS_조건문  (0) 2025.04.10
JS_연산자  (0) 2025.04.10
JS_변수형  (0) 2025.04.09

1. 제어문
        프로그램의 흐름을 개발자가 원하는 방식으로 조정하기 위해 사용하는 구문이다.
        (1) 조건문 : if , else if, else, switch
        (2) 반복문(기본) : for ,  while , do... while
        (3) 제어문 : break. continue


2. 조건문
        조건의 참(True) 또는 거짓(False)에 따라 코드의 실행 흐름을 제어하는데 사용된다.
        (1) if : 조건이 참일 때 실행되는 코드 / 주로 범위줄 때(ex. 점수)
        (2) else : 조건이 거짓일 때 실행되는 코드
        (3) else if : 복수(참&거짓) 조건일 때
        (4) switch : 여러 값 중 하나를 선택할 경우
                        (= 값이 하나이고 경우가 여러개일 때 유용)

< basic>

let age = 13;

if (age >= 18) {
  console.log("성인입니다.");
} else if (age >= 13) {
  console.log("청소년입니다.");
} else if (age >= 6) {
  console.log("어린이입니다.");
} else {
  console.log("유아입니다.");
}

// 심화버전
let kor = 100;
let eng = 76;
let math = 95;
let total = kor + eng + math; // 총점
let avg = total / 3; // 평균
// 95점 이상 : A
// 80점 이상 : B
// 70 : C
// 60 : D
// 나머지 : F
console.log(`총점 : ${total}`);
console.log(`평균 : ${avg}`);
if (avg >= 95) {
  console.log(`점수는 A입니다.`);
} else if (avg >= 80) {
  console.log(`점수는 B입니다.`);
} else if (avg >= 70) {
  console.log(`점수는 C입니다.`);
} else if (avg >= 60) {
  console.log(`점수는 D입니다.`);
} else {
  console.log(`점수는 F입니다.`);
}

< if - else if version >

const month = 11;
// 날짜 if문으로 구분하기 OR 연산자 사용해서!
if (
  month == 1 ||
  month == 3 ||
  month == 5 ||
  month == 7 ||
  month == 8 ||
  month == 10 ||
  month == 12
) {
  console.log(`${month}월의 마지막 일자는 31일입니다.`);
} else if (month == 2) {
  console.log(`${month}월의 마지막 일자는 28일입니다.`);
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
  console.log(`${month}월의 마지막 일자는 30일입니다.`);
}

< switch version >

const month = 11;
// switch 구문에서 결과값이 동일한 case들을 묶어서 조건문 완성해보기
switch (month) {
  case 1:
  case 3:
  case 5:
  case 8:
  case 10:
  case 12:
    console.log(`${month}월의 마지막 일자는 31일입니다.`);
    break;

  case 2:
    console.log(`${month}월의 마지막 일자는 28일입니다.`);
    break;
  case 4:
  case 6:
  case 9:
  case 11:
    console.log(`${month}월의 마지막 일자는 30일입니다.`);
    break;
  default:
    console.log(`1월~12월 사이값으로 다시 입력해주세요!`);
}

 

cf. ternary로 조건문을 만들 수 있다. (하지만 굳이?)

const score = 85;
const grade =
  score >= 90
    ? "A"
    : score >= 80
    ? "B"
    : score >= 70
    ? "C"
    : score >= 60
    ? "D"
    : "F";
console.log(`당신의 성적은 ${score}점이고 ${grade}입니다.`);

 

 



3. 기본 반복문
        (1) for : 초기식, 조건식, 증감식을 포함하여 *반복횟수가 명확*할 경우
        (2) while : 조건이 참인 동안 계속 반복된다.(반복횟수 정해져있지않음)
        (3) do...while : 최소 한번은 실행된 후 조건을 검사, 적어도 한 번 실행보장

        => 배열이나 객체와 무관하게, 반복적으로 어떤 작업을 수행할 때 사용된다.
                (= 평이한 반복문)

let count = 1;
/*
while (count <= 5) {
    console.log(count) //무한루프 끝내기 -> ctrl + c (in 터미널)
}  */

while (count <= 5) {
  console.log(count);
  count++;
}

let dan = 5;
let i = 1;
while (i <= 9) {
  console.log(`${dan}* ${i} = ${dan * i} `);
  i++;
}



'Web > JS' 카테고리의 다른 글

function & class 학습응용  (0) 2025.04.23
for문을 이용한 응용  (0) 2025.04.23
JS_연산자  (0) 2025.04.10
JS_변수형  (0) 2025.04.09
JavaScript 시작  (0) 2025.04.09

1. 산술 연산자(Arithmetic Operators)

  • + : 더하기
  • -  : 나누기
  • *  : 곱셈
  • /  : 나눗셈
  • %  : 나머지

2. 비교 연산자(Comparison Operators)

  • == : 값이 같은가?        cf. 자바스크립트의 자동변환에 주의하자
  • === : 값과 자료형이 모두 같은가?
  • != : 값이 다른가?
  • !== : 값 또는 자료형이 다른가?
  • > / >= : 초과 / 이상
  • < / <= : 미만 / 이하

 

3. 논리 연산자(Logical Operators)

  • && : AND   → boolean의 경우 곱하기로 생각하면 이해하기 쉬움👍   Ex. True(=1) * False (=0) =  False(=0)
  • || : OR → boolean 의 경우 더하기로 생각하면 이해하기 쉬움
  • ! : NOT 부정

4. 할당 연산자 (Assignment Operators)

  • =  ,  +=  ,  -=  , *=  , /=

5. 증감 연산자 (Increment / Decrement)

  • ++ : 1증가
  • -- : 1감소

증감 연산자는 전칙 / 후칙으로 나뉜다. (height ++ : 전칙 / ++height : 후칙)

let num = 10;
num++; //11
console.log(num); // 11
++num; // 12
console.log(num); // 12
let result = 0; // 0
result = ++num; // 1
console.log(result); // 1
result = num++; // 13 , ++가 =보다 우선순위가 떨어짐 따라서 13을 먼저 result에 저장하고
console.log(result); // 13
// num =14가 나중에 저장됨 따라서 result = 13 / num = 14 이다(화살표 상상해서 착각하지 않기!)

 

 

6. 비트 연산자

정수를 이진수로 변환한 후 , 각 자릿수의 비트를 기준으로 연산한다.

  • & : 비트 AND
  • | : 비트 OR
  • ^ : 비트 XOR   → 서로 다르면 1
  • ~ : 비트 NOT → 0 1로 / 1 0 변환
  • << : Left Shift → 오른쪽 방향으로  n개의 0을 생성
  • >> Right Shift → 오른쪽 끝에서부터 왼쪽 방향으로부터 n개의 비트를 삭제
console.log("-------비트 연산자-------");

// 비트 연산자
//16 8 4 2 1
let a = 23; // 1 0 1 1 1
let b = 14; // 0 1 1 1 0
// 비트 AND : &
console.log(a & b);
// 비트 OR(둘 중 하나라도 1이면 1) : |
console.log(a | b);
// 비트 XOR(OR랑 반대개념) : ^
console.log(a ^ b);
// 비트 NOT : ~
// 이진법의 맨 앞은 부호를 나타내며 0은 양수 1은 음수이다.
// Ex) ~32를 하면 음수값으로 답이 나올 것이다.
console.log(~a);
// 5 -> -5로 만들고 싶다면 ~5 + 1 = -5
console.log(~a + 1);
// Left Shift : 오른쪽에 n개의 0이 연속적으로 붙음
console.log(a << 1);
// Right Shift
console.log(a >> 1);
 

 

 

7. 연산자 우선순위

할당 연산자보다 더 아래에 있는것은 후칙연산자

따라서   num++   →    =      ++num 이 순서로 적용된다 

'Web > JS' 카테고리의 다른 글

function & class 학습응용  (0) 2025.04.23
for문을 이용한 응용  (0) 2025.04.23
JS_조건문  (0) 2025.04.10
JS_변수형  (0) 2025.04.09
JavaScript 시작  (0) 2025.04.09

1. 변수

데이터를 저장하고 나중에 재사용하기 위해 이름을 붙인 저장공간

  • var : 예전 방식 → 사용하지 않기 !
  • let : 블록 스코프 / 재할당 O → 일반적으로 사용
  • const : 블록 스코프 / 재할당 X  → 주로 상수 선언시 사용

각각의 키워드는 변수의 스코프(유효 범위)와 재할당 가능 여부에 따라 다르게 동작한다.

단, 자바스크립트는 동적 타입 언어기이에 변수에 저장된 값의 자료형은 언제든 바뀔 수 있음.

 

1.1 변수 선언

// let으로 age라는 저장소를 만듦
// age에undefinded (값이 저장되지 않음)이라는 값이 들어감.
let age

 

1.2 값 저장

// 우측에 있는 값을 왼쪽에 대입했다!
// age라는 방이 만들어짐
// ' age 방이 20이 저장된 방을 가리키면서 참조한다.' 로 이해하는 것이 유용
age = 20

 

1.3 선언과 대입을 한줄로!

 

// 선언과 동시에 값 넣기
// 숫자와 문자 구분하기
// PI : 상수  -> 값 변경 불가
let name ="apple"
const PI = 3.14

 

1.4 저장한 값을 사용

// const age ;  // 값을 대입해야함.
const age = 20;
// age = 20; 할당 및 재할당 못함. 
// 왜? const함수는 재할당이 불가능하기 때문에 한줄로 써야한다!
console.log(age);

 

 

2. 자료형 (Data Type)

A라는 변수를 만들 때, A가 값을 가리킬 대상이 누군지 알려준다. 

즉, 자료형은 데이터의 성격을 정의하는 기준

 

2.1 기본형(Primitive Type)

기본형은 값 자체를 저장(주로 데이터 한개씩)하며, 변경 불가능한(immutable) 특성을 가지며, 스택(Stack) 메모리에 저장한다.

기본형은 스택에 "값 자체"가 저장한다.

 

cf. 자바는 크게 RAM이 두가지로 나뉜다.

 

Case 1.

let name; // 변수 선언, 값 : undefined
console.log(name);
name = "김사과"; // 값 대입(할당)
console.log(name);

Case 2.

let obj1 = { name: "apple" };
console.log(obj1.name);
Stack Heap
Case 1.
( name )      →      ('김사과')

Case 2.
(obj1)     →    Heap 의 name 공간을 가리킴



  Case 2.  
(name("apple"))

 

2.1.1 Numeber - 숫자

  • 정수, 실수 , 음수 양수 모두 포함

2.1.2 string - 문자열

  • 텍스트 데이터를 표현
  • 큰 따옴표, 작은 따옴표, 백틱으로 감싼다.
  • 문자1 + 문자2 = 문자1문자2

cf. 외부 데이터를 사용할 때, 모든 숫자가 문자형으로 들어오기 때문에

캐스팅 (문자 → 숫자로 변환) 이라는 과정을 거쳐야 한다.

 

2.1.3. boolean - 참 또는 거짓

  • true 또는 false 두 가지 값만 가질 수 있음
  • 조건문에서 주로 사용

2.1.4 Undefined - 값이 정의 되지 않음

  • 변수를 선언했지만 값을 주지 않았을 때 자동으로 undefined가 된다.

2.1.5 Null - 아무 값도 없음

  • 의도적으로 " 값이 없다 "는 것을 나타낸다.

2.1.6 Symbol - 고유한 식별자

  • 유일한 값이 필요한 경우 사용
  • 일반적으로 자주 쓰이지 않음

2.1.7 Bigint - 아주 큰 정수

  • 일반 number로 표현할 수 없는 큰 정수 (Bigint > 10^6)
  • 숫자 뒤에 n을 붙인다.

 

3. 참조형 (Reference Type)

참조형은 값이 아닌 주소(참조)를 저장한다.

이 주소는 힙 메모리에 저장되며, 값은 변경 가능하다.

obj 는 스택에 저장되고 힙에 저장되어있는 키 + 키안의 값(value)를 가리킴

 

// 참조형 : stack의 obj2가 Heap의 obj1와 같은 주소를 가리킴
let obj1 = { name: "apple" };
console.log(obj1.name);
let obj2 = obj1;
obj2.name = "banana";
console.log(obj2.name); // banana
console.log(obj1.name); //원래 변수의 값도 바뀐다.

 

 

2.1 object – 여러 값을 하나로 묶는 자료형

  • {key : 'value'} -str
  • {key : 123 } - num

2.2 array – 순서가 있는 값들의 집합

  • [ 1, 2, 3 , 'apple', 123]
  • 값은 어떤 타입이든 섞여도됨

2.3 function – 실행 가능한 코드 블록

  • 함수명 : function ( ) {   return "Hi"  }
  • 함수도 객체이지만, 호출할 수 있다는 점에서 특별한 역할

2.4 date, regexp, map, set, class 등

  • Ex) let now : new Date( )
  • 자바스크립트에는 기본 객체 외에도 다양한 내장 객체가 존재한다.
/*
    기본형( Primitive Type)
*/
// 내부적으로 각자 다른 값을 가짐
let num = 20;
let str = "Hello, JS!";
let isReady = true;
let nothing = null;
let notDefined;
let bigNumber = 123456789012334567n;
let unique = Symbol("id");

console.log("기본형 타입 출력");
console.log("num", num);
console.log("str", str);
console.log("isReady", isReady);
console.log("nothing", nothing);
console.log("notDefined", notDefined);
console.log("bigNumber", bigNumber);
console.log("unique", unique);

// 기본형 : 값을 복사해서 같은 값의 공간을 새로 생성함
// 참조형 : stack의 obj2가 Heap의 obj1와 같은 주소를 가리킴
let obj1 = { name: "apple" };
console.log(obj1.name);
let obj2 = obj1;
obj2.name = "banana";
console.log(obj2.name); // banana
console.log(obj1.name); //원래 변수의 값도 바뀐다.

/*
    참조형(Reference Type)
*/
//object - 여러 값을 하나로 묶는 자료형
let person = { name: "apple", age: 20 };
// array - 순서가 있는 값들의 집합
let numbers = [1, 2, 3, 4, 5];
// function - 실행 가능한 코드 블록
let greet = function () {
  return "안녕하세요";
};
// date, regexp, map, set, class etc... -> 내장 함수
let now = new Date();

console.log("참조형 타입 출력");
console.log("person :", person);
console.log("numbers :", numbers);
console.log("greet() :", greet());
console.log("now :", now);

// ```(벡틱)
let num1 = 10;
let num2 = 5;
// 10*5 = 50
console.log(num1, "*", num2, "=", num1 * num2);
console.log(`${num1}*${num2}=${num1 * num2}`);

 

4. 스택과 힙 (Stack & Heap)

3.1 스택의 특징

  • Last-In , First-Out (LIFO)
  • 작고 단순한 값들 저장(데이터 하나, 여러개X)
  • 함수 호출 시 실행 정보(변수, 매개변수 등)가 저장됨

3.2 힙의 특징

  • 크고 복잡한 데이터 저장(주로 객체, 배열, 함수)
  • 구조는 자유롭지만 속도 느림
  •  Stack - 값의 주소(참조값)  /  Heap - 값  
  • 가비지 컬렉터가 불필요해진 데이터를 자동 정리할 수 있음
Stack Heap
함수 , 매개변수  → 함수 호출 시 실행정보 객체, 배열, 함수

 

 

# 가비지 컬렉션(Garbage Collection) ?

사용하지 않는 메모리 정리!!!

Heap에서 Heap의 객체가 더이상 Stack에서 참조받지 않는 것들(=화살표가 끊킨 객체들)을 알아서 정리해준다.

 

5. 타입 변환 (Type Conversion)

자바스크립트는 타언어와 비교할 때, 비교적 언어의 문법이 유연한 편이다.  자바스크립트는 동적 타입 언어라서, 상황에 따라 문자열이 숫자로 , 숫자가 불리언으로 자동 변환될 수 있다. 이처럼 

- 자동으로 타입 바꾸는 것 : 암시적(자동) 타입 변환

- 수동으로 타입 바꾸는 것 : 명시적(수동) 타입 변환

'Web > JS' 카테고리의 다른 글

function & class 학습응용  (0) 2025.04.23
for문을 이용한 응용  (0) 2025.04.23
JS_조건문  (0) 2025.04.10
JS_연산자  (0) 2025.04.10
JavaScript 시작  (0) 2025.04.09

+ Recent posts