자바스크립트 기초

chanyeong yu ·2025년 2월 12일

웹프로그래밍

목록 보기
2/12

변수

let 으로 선언
변할 수 있는 값이다.
const
절대로 바뀌지 않는 상수, 대문자로 선언함

tip 일단 let으로 선언하고 바뀌지않은 상수만 const로 선언

자료형

1. 문자형

# 1. 문자형
const name = "Mike";
const message = `My name is ${name}`;
///이런 식으로 출력한다. 

# 2. 숫자
const age = 30;

# 3.Boolean 
const a = true ; 
const b = false ;

# nullundefined
let user = null;

# typeof

alert, prompt, confirm

const name = prompt("이름을 입력하세요.");
alert("환영합니다, " + name + "님");
alert(`안녕하세요 ${name}`);

prompt는 항상 문자열을 변환한다. 따라서 Number()로 변환해주어야한다.

함수 표현식

함수는 한번에 한 작업만 집중해서 사용할 것.

함수 선언문 vs 화살표 표현식

함수 선언문

어디서든 호출이 가능하다. 즉 호이스팅이 가능하다.


sayHello();

function sayHello(){
  console.log('hello');
}
// 오류 없음 

함수 화살표 표현식


let add = funtion(num1, num2){
  retrun num1 + num2;
}

let add (num1, num2) => {
  return num1 + num2;
}

//한줄일때 리턴 생략 가능. {}를 ()변경 가능.
let add (num1, num2) => (
	num1 + num2;
)

//한줄이면 괄호 자체 생략 가능 
let add (num1, num2) => num1 + num2;

아주 간결함.
화살표함수는 this를 가지고 있지 않음.

Object

const superman = {
  name = 'clark',
  age = 30,
}

superman.name
superman[age]

superman.hairColor = 'black';
superman['hobby'] = 'football';

delete superman.name; 
delete superman[age];
function makeObject(name, age){
  return {
    name,
    age,
    hobby : 'fooball'
  };
}
const Mike = makeObject("Mike", 30);

console.log('birthday' in Mike);

배열


fruits.push("orange"); // 배열 끝에 추가
fruits.unshift("grape"); // 배열 앞에 추가

fruits.pop(); // 배열 끝에서 삭제
fruits.shift(); // 배열 앞에서 삭제
  • 보통 반복문을 사용할때 많이 쓴다.
days = ['mon', 'tue', 'wed']

days.push("thu")
days.unshift("sun");

//length()로 반복 
for(let i = 0; i < days.length; i++){
  console.log(days[index]);
}

//of 사용 
for(let day of days){
  console.log(day);
}

객체 메소드, 계산된 프로퍼티

객체를 그대로 변수에 대입하면 참조가 되기 때문에 복제가 아니다.

따라서 Object.assign 메소드를 사용해서 복제한다.


let n = "name";
let a = "age";

const user = {
  [n] : "Mike", //동적으로 변수에 할당.
  [a] : 30,
  [1+4] : 5, //계산 식도 가능하다 
};

const user = {
  name : "Mike", 
  age  : 30,
};

const user2 = Object.assign({}, user);
//객체 복사 및 병합

console.log(Object.keys(user)) // [name, age]
//값 배열 반환.

Object.values(user) // ["Mike", 30]
//벨류값 반환

Object.entries(user)
//[["name", "Mike"],["age",30]]

----------------------------

let arr = [
  ["mon", "월"],
  ["tue", "화"],
];

const result = Object.fromEntries(arr);
// 결과 : {mon :"월", tue :"화"}
// 배열을 객체로 만들어준다. 

심볼(Symbol)

유일한 식별자를 만들때 사용한다.

const a = Symbol();
const b = Symbol();
//유일성이 보장된다.

const id = Symbol('id');
const id2 = Symbol('id');

id != id2 이다. 

Object.keys(), Object.values(), Object.entries()
위에서 배운 오브젝트 프로퍼티들은 심볼을 무시한다.

주로 객체의 키로 사용되며, 다른 코드에서 접근하지 못하도록 숨기고 싶을 때 유용합니다.

전역 심볼 Symbol.for()

  • 하나의 심볼만 보장받을 수 있다.
  • 없으면 만들고, 있으면 가져온다.
  • 즉 하나를 생성하고 키를 통해 같은 심볼을 공유한다.
const id = Symbol.for('id');
const id2 = Symbol.for('id');

id == id2 이다.

Number, Math

toString()
10 진수 -> 2진수/16진수

let num = 10;

num.toString(); // "10"
num.toString(2); // "1010"
num.toString(16); // "A"

Math.PI;
//3.14...

Math.random() //난수 생성 
Math.floor()
Math.ceil()

Math.round() //반올림 
or 
Number(변수.toFixed(진수형)); //toFixed는 문자형을 반환한다.

let x = Number('x'); // NaN
isNaN(x) // true 
//오직 이로만 NaN을 검출할 수 있다. 나머지는 다 False나옴

parseInt("10px") // 10, 문자가 섞여있어도 문자를 숫자를 반환한다.
parseInt(바꿀 숫자,그숫자의 원래 진수형) //출력은 10진수로 변환된다.
 

문자열 메소드

구조 분해 할당

let [a,b] = [1,2]
//즉 a와 b에 1과 2를 순서대로 대입한다.

let [a,b,c] = [1,2] //이 경우 c는 undefined
let [a=3, b=2, c=5] = [1,2] // 초깃값 설정으로 문제해결.

let [user1, ,user2] = ['Mike', 'Tom', 'Jane', 'Tony']
// Mike, Jane 입력. 
//, ,로 정하면 그 인덱스는 무시되고, 넘치는 값들은 무시된다.

배열 구조분해

let a = 1;
let b = 2;

[a,b] = [b,a]

//쉽게 변경 가능.

객체 구조분해


let user = {name : "Mike", age : 30};

let {name, age} = user;
// let name = user.name;
// let age = user.age;

let {name: userName, age: userAge} = user; 
//새로 이름을 지을 수 있음.
// userName = "Mike" 고 userAge = 30이 된다.

let {name, age, gender = "male"} = user; 
// 똑같이 이렇게 기본값을 지정해야함. 근데 이미 있는 값이면 기본값이 지정 안된다.

0개의 댓글