JavaScript 문법 - 1

박재민·2023년 12월 29일
0

TIL

목록 보기
5/49

- JavaScript

JavaScript 란?

- 웹 페이지에서 복잡한 기능을 구현할 수 있는 스크립팅 또는 프로그래밍 언어 다.

JavaScript 문법


변수

변수 이름 : 저장된 값의 고유 이름
변수 값 : 변수에 저장된 값
변수 할당 : 변수에 값을 저장하는 행위
변수 선언 : 변수를 사용하기 위해 컴퓨터에 알리는 행위
변수 참조 : 변수에 할당된 값을 읽어오는 것

변수를 선언할 수 있는 3가지 방법 : var, let, const

var

var var1 = "Hello"
var var1 = "Hi"
var1 = "GoodBye"

똑같은 이름으로 다시 선언 가능
값 재할당 가능

let

let let1 = "Hello"
//let let1 = "Hi"
let1 = "GoodBye"

똑같은 이름으로 다시 선언 불가
값 재할당 가능

const

const const1 = "Hello"
// const const1 = "Hi"
// const1 = "GoodBye"

똑같은 이름으로 다시 선언 불가
값 재할당 불가


데이터 타입

- JavaScript는 대부분 runtime에서 실행되는 언어.
- runtime : 실제 코드가 실행될 때 데이터 타입이 결정됨
- (typeof 변수명) 으로 타입 확인 가능.

숫자

- 숫자 -

1. 정수 ( let num1 = 10 )
2. 실수 ( let num2 = 3.14 )
3. 지수형 ( let num3 = 2.5e5 ) // 2.5 x 10^5
4. NaN ( 숫자가 아닌값을 변환 할려고 할 때 나타나는 현상 ) ( let num4 = "Hello" / 2 )
5. Infinity ( let num5 = 1 / 0 )
6. -Infinity ( let num6 = -1 / 0 )

문자

- 문자 string( 문자열 = 문자의 나열 ) // ' ' = " "
- (변수명.lenght) 으로 문자열 길이 확인 가능.
문자열 결합 (concat)
let str1 = "Hello,"
let str2 = "World!"
let result = str1.concat(str2)
console.log(result) // Hello,World!
문자열 자르기(substr, slice)
let str3 = "Hello, World!"
console.log(str3.substr(7, 5)) // World
console.log(str3.slice(7, 12)) // World
문자열 검색(search)
let str4 = "Hello, World!"
console.log(str4.search("World!")) // 7
문자열 대체(replace)
let str5 = "Hello, World!"
let result01 = str5.replace("World!", "Javascript!")
console.log(result01) // Hello, Javascript!
문자열 분할(split)
let str6 = "apple, banana, kiwi"
let result02 = str6.split(",")
console.log(result02) // [ 'apple', ' banana', ' kiwi' ]

불리언 (Boolean)

- true (참)
- false (거짓)
- undefined (정의되지 않은)
- null (값이 존재하지 않음을 '명시적' 으로 나타내는 방법)

※ undefined = 정의 되지 않은 값
※ null = 개발자가 의도적으로 값이 없다라는걸 명시하기 위해서 넣은 값

true, false

let bool1 = true
let bool2 = false

console.log(bool1) // true
console.log(bool2) // false

console.log(typeof bool1) // boolean
console.log(typeof bool2) // boolean

undefined, null

let x
console.log(x) // undefined

let y = null
console.log(y) // null

객체 (Object)

- key (키값)
- value (결과값)
- 하나의 변수에 여러개의 값을 넣을 수 있다.

- Object.keys() (key를 가져오는 메소드)
- Object.values() (value를 가져오는 메소드)
- Object.entries() (key 와 value 를 묶어서 배열로 만든 배열 (2차원 배열))
- Object.assign() 객체 복사
  () 안에는 target(어디에) , source(무엇을) + 추가로 바꾸고 싶은 내용은 { 안에서 따로 바꿀 수 있음 }


- 객체 비교 (객체와 배열은 다른 데이터타입에 비해서 크기가 상당히 크다)
                -> 메모리에 저장할 때 별도의 공간에 저장

- 객체 병합 ... : spread operator

key, value

let person = {
  name: "박재민",
  age: 24,
  gender:"남자",
}
// name, age, gender = key
// Jaemin, 24, 남자 = value


console.log(person.name) // "박재민"
console.log(person.age) // 24
console.log(person.gender) // "남자"
// 위 방법으로 접근 가능

Object.keys

// 객체는 위와 동일

let keys = Object.keys(person)
console.log(keys) // [ 'name', 'age', 'gender' ]

Object.values

let values = Object.values(person)
console.log(values) // [ 'Jaemin', 24, '남자' ]

Object.entries

let entries = Object.entries(person)
console.log("entries => ", entries) 
// [ [ 'name', 'Jaemin' ], [ 'age', 24 ], [ 'gender', '남자' ] ]

Object.assign

let newPerson = {}
Object.assign(newPerson, person, { gender: "여성"} )
console.log("newPerson => ", newPerson)
// { name: 'Jaemin', age: 24, gender: '여성' }

객체 비교

// person1 별도 공간에 대한 주소
let person1 = {
  name: "박재민",
  age: 24,
  gender:"남자",
}

// person2 별도 공간에 대한 주소
let person2 = {
  name: "박재민",
  age: 24,
  gender:"남자",
}

console.log(person1 === person2) // false
// ※ 두 객체는 각각 값을 직접 저장하는게 아니라 주소를 저장하는거라서 서로가 다름 //

--------------------------------------------------------------------------
console.log(JSON.stringify(person1) === JSON.stringify(person2))
// JSON 을 사용해서 주소값으로 돼있던 걸 문자열화 시키면 ture
let str1 = "aaa"
let str2 = "aaa"

console.log("answer => ", str1 === str2) // true
// 반면 위 객체는 값을 직접 저장하기 때문에 서로 같음

객체 병합

// person1 별도 공간에 대한 주소
let person1 = {
  name: "박재민",
  age: 30,
}

//person2 별도 공간에 대한 주소
let person2 = {
  gender: "남자",
}

let perfectMan = {...person1, ...person2}
console.log(perfectMan) // { name: '박재민', age: 24, gender: '남자' }

느낀점

오늘 1주차 JavaScript 문법에 대해서 강의 듣고 공부해봤다. 그리고 코딩테스트 문제도 풀어봤는데 알던 개념도 많이 헷갈렸다. 그런 문제들을 풀기 위해선 문제를 보고 제시하는 내용에 대한 아이디어가 잘 떠올라야 할 것 같다. 문제를 보고 바로 '코드로 이렇게 짜야하나?' 하면서 고민했더니 답도 안나오고 시작을 못뗐는데, 차근차근 주석달면서 한글로 적다보니 어느정도 갈피가 잡혔었다. 오늘 풀었던 문제 말고도 다른 쉬운 문제도 많이 있어서 기초 문제들 부터 풀면서 연습해봐야겠다.

0개의 댓글