16일차(2022.01.13 2시간 51분)

roadzmoon76·2022년 1월 13일
0

매일 공부

목록 보기
17/217

JAVASCRIPT 데이터 타입

  • string : 문자열 타입. 단어, 문장, 알파벳 하나 등이 스트링 타입임. 숫자도 스트링 타입임. ""(큰 따옴표)나 ''(작은 따옴표) 안에 들어간건 모두 스트링이라 부름

    	let password = "123" + 1

    를 하면 결과값은 124가 아니라 문자로 인식해서 1231이 나옴

  • 숫자타입 : ""안들어가있는 숫자

    	let password = 123 + 1

    결과값은 124가 나옴
    -, 소수점 모두 가능

  • boolean : true, false 두개의 값만 있음. 논리연산에 많이쓰임

    	let password = true

JAVASCRIPT 연산자

  • % : 나눈후 나머지를 받아옴

    C = A%B

A를 B로 나눴을 때 나머지를 C에 저장

  • 논리연산자
let password = 1
password = password > 3

하면 결과값 false 나옴
>= 는 크거나 같다, 작거나 같다

  • || : or 연산. 둘중에 하나만 참이여도 참
let password = 2
password = password > 3 || password > 1

이러면 true

  • && : and 연산. 둘다 참이여야 참
let password = 3
password = password > 3 && password > 1

이러면 false

Const, let, var

  • const : 변하지 않는 값을 정의하고 싶을 때 사용. 상수를 만드는 것

호이스팅이란?
자바스크립트에는 특이한 특징이 있음. 코드가 실행되기 전에 먼저 자바스크립트 엔진이 선언해둔 변수와 함수들을 가져가서 메모리에 기억을 해둠.
그러다 나중에 a라는걸 호출하면 바로 내보내줌.
즉, 함수가 실행되기 전에 안에있는 변수들을 범위의 최상단으로 끌어올리는 것을 호이스팅이라 함.

위의 호이스팅이라는 개념덕에

console.log(a)
var a = 1
console.log(a)

를 해도 다른 언어들과 달리 오류가 안나고 undefined / 1 로 출력이 됨.
코드가 콘솔창에 나오기 전에 자바스크립트 엔진이 선언된 a를 저장하고 코드를 읽었기 때문. 자바스크립트 엔진은 호이스팅시 변수의 선언과 초기화(undefined로)를 같이 시킴.

  • 전역변수 : 블락 밖에서 선언을 해서 어디서든 쓰일 수 있는 변수

  • 지역변수 : 블락 {} 안에서 선언된 변수, 블락안에서만 쓸 수 있음. 지역을 벗어나면 에러.

  • var : 함수만 지역변수로 호이스팅이 되고, 나머지(for문, if문 등)는 다 전역변수로 올려버림. 또한 너무 느슨해서 정의가 두개가 있어도 둘다 출력을 해주는 등 문제가 많았음.

var a = 1
console.log(a)
var a = 2
console.log(a)

이러한 것도 var에선 오류가 안나고 1/2 로 출력됨

for(var i=1;i<5;i++){
  console.log(i)
}
console.log(i)

이러한 것도 var에선 오류가 안나고 1/2/3/4/5로 출력됨

  • let : 기존에는 var 만 쓰다가 2015년에 es6로 자바스크립트가 업그레이드를 하며 등장. 문제가 많은 var를 없애고자 변수를 선언하는 새로운 방식을 냄.
let a = 1
console.log(a)
let a = 2
console.log(a)

a가 이미 선언됐다고 오류가 나는, 맞는 로직으로 바뀜.

for(let i=1;i<5;i++){
  console.log(i)
}
console.log(i)

1,2,3,4 까지 나오고 i가 정의 안됐다는 오류가 뜸

또한 let도 호이스팅이 되나 TDZ(Temporal Death Zone)을 만들어서 정의되기 전까지 나온 출력물은 데드존에 넣어버려서 문제 해결

console.log(a)
let a = 1
console.log(a)

하면 var와 달리 TDZ이기 때문에 a에 접근할 수 없다는 에러가 나옴

Array 배열 []

관련있는 데이터들을 하나로 묶어서 하나의 변수 아래에 저장하는 것

let fruit1 = "apple"
let fruit2 = "banana"
let fruit3 = "grape"
let fruit4 = "mango"

console.log(fruit1, fruit2, fruit3, fruit4)

let fruit = ["banana","apple","grape","mango"]

console.log(fruit)

각각 정의하면 너무 번거로우므로 하나의 변수 아래 정리
프린트도 매우 편해짐

한가지만 출력하고 싶다면 순서를 입력해 주면 됨
ex) banana만 출력하고 싶다면

console.log(fruit[0])

하면됨(컴퓨터는 0부터 센다)

이렇게 배열로 정의하면 번호가 붙는데 그 번호를 인덱스 라고함
즉 바나나가 0번 망고가 3번

어떤 위치에 있는 값을 바꾸고 싶으면 인덱스 번호로 접근

fruit[0]="orange"

를 입력하면 바나나가 오렌지로 바뀜

  • pop() :마지막에 있는 아이템을 뺌
  • push() : 마지막에 아이템 추가
  • includes() : 해당 아이템을 포함하고 있나 확인
  • indexOf() : 해당 아이템의 인덱스
  • slice() : 해당 인데스를 포함하여 이후 아이템들을 잘라낸 놈들을 보여줌 (a,b)로 입력하면 a번째부터 b까지(b는 포함 x)
    slice는 기존의 배열을 건들지 않고 떼내어 새로운 배열을 만듬
  • splice() : (a,b)로 입력하면 a부터 b개를 잘라냄. 즉 시작점으로 부터 몇개의 아이템을 제거하고 싶은지. 제거 하고 남은애들을 보여줌
    splice는 기존의 배열이 잘리는 것

Object 객체 {}

한 데이터에 많은 정보가 필요한 경우 사용

객체에서 값을 가져오는 법은 2가지다

console.log(user.name)
console.log(user["name"])

두번째껀 배열문법에서 기억하기 쉬우라고 따온것

주의!)객체라는 자료형을 배운것일 뿐 객체지향형 프로그래밍과는 별개다. 객체지향형 프로그래밍은 프로그래밍을 하는 어떤 방식을 의미

profile
크론병걸린 자퇴생, 개발자되기

0개의 댓글