자바스크립트 스터디 1일차

걍걍규·2023년 5월 29일
0
post-thumbnail

section0

정식명칭인 ECMAScript를 줄여서 ES6+와 같은 스펙 약칭으로 부른다
ES6부터가 거의 표준이라고 보면 되고 1년마다 스펙을
ES5까지는 프로그램 언어의 기본 중심
ES6+ 부터는 활용 편리성 중점으로 부족함이 없어졌다
이것이 ES6+를 배워야 하는 목적이자 이유가 된다
property key 는 String value 을 의미하고
이것을 알고 가는 이유는
property name : String
property key : String 과 Symbol
Symbol의 사용 유무가 다르기에 구분이 필요하다
ES6~ 함수의 종류도 늘어났다
static method - class에서 사용되는 메서드
method - Object.func(parameter) 의 형태로 이용
function Object.prototype.func(parameter) prototype 이용

section1

로컬(지역)변수, 글로벌(전역)변수를 구분하는 이유

글로벌 변수는 이름처럼 다른 js파일에서 까지 변수를 공유한다
공통 변수 개념으로 사용하고 편의성을 위한 의도는 좋으나 매번 찾아서 사용해야 하는 점에서 처리 속도가 떨어진다

로컬변수는 빠른 처리속도를 위해 가까운 스코프의 변수를 사용한다

function(){블록}

함수 안, 밖으로 같은 이름의 let 변수 선언이 가능하며
함수 밖에 있는 let 변수를 함수 안에서 사용 하는 것 = 클로저

let name = "강경규";
function namePrint(){
  let name = "또띠";
  console.log(name);
};
namePrint();
console.log(name);

출력결과!

위 코드에서 함수 내의 name을 지우고 밖에 있는 name을 활용 하는것이 클로저요~~

try-catch

하나의 자바스크립트 파일에서 변수를 선언하고
try문을 만들어 그 안에서 같은 이름의 변수를 또 선언하면
try문 안에서는 그 안에서 선언 된 변수를 사용한다
그러나 catch문 안에서는 밖에서 선언 한 변수를 사용한다.

swicth-case

swicth문을 하나의 블록으로 보고 그 기준으로 같은 이름의 let 변수 작성 불가능
컴파일 할때 에러가 난다고 한다

let 변수

{블럭} 안과 밖이 스코프가 다르다 즉 변수 이름이 같아도 값이 대체되지 않는다.
{} 안에서 밖의 것은 사용이 가능하나 반대는 불가능하다
let을 선언 만 했을 경우 ex ) let a; 사용할수 없는 undifind로 할당된다.
이러나 저러나 변수 이름만 보아도 어떤 역할인지 구분이 되어야 하고 중복을 최소화 하는게 좋아보인다 가독성을 위하여!

let var의 차이

let- 스코프를 가진다 var - 스코프를 안가진다
var가 더 자유롭다고 볼 수 있고, 효율 자체 더 높은 경우도 있다
스코프를 구분하여 let과 var 키워드를 구분해 사용할 수 있도록

let 변수와 this

var로 선언하냐 let으로 선언하냐 따라 변수가 설정되는 위치가 다르다고 한다..
var는 windows, let은 Script에 별도로 존재하고
this는 windows에서 변수를 가져오는 방식이라
스코프 변수인 let은 이런식으로 출력하게 되면 undifined가 나오는걸 확인할 수 있었다.
사용할 수 없고 임시로 값을 부여한 undifined

let의 활용 구분

블록 안에서 선언할 경우 밖에서 사용이 불가능한 로컬변수가 되지만
블록 밖에서 선언할 경우 다른 파일에서 까지 사용이 가능한 전역변수가 된다

어렵고 많은 내용이지만 간단히 정리하자면
let이 생기면서 블럭, 스코프의 개념이 생겼고
함수, for문 등등 {}가 있는 코드를 작성할 시에
var변수는 어디서든 선언과 재정의와 사용이 가능했고
let은 블럭 안에서는 밖에 것을 가져와 사용할 수 있는데
밖에서는 블럭 내에서 선언 된 let 변수를 사용할 수 없다.

호이스팅

변수를 선언하기 전에 사용하고 밑에서 선언하는 것

var는 undifined로 호이스팅이 된다
var는 선언하지 않으면 undufined를 직접 할당한다
이것을 호이스팅이라 불렀다

let은 호이스팅이 되지 않아 에러가 발생한다 (인식도 안됨)
let은 선언하지 않으면 undifined를 임시로 부여할 뿐
값을 가진 것은 아니기에 호이스팅을 사용할 수 없다

const

값을 바꿀 수 없는 변수를 선언 (그러나 상수는 아니다.)
값을 바꿀 수 있는 let과의 가장 큰 차이가 있다
선언만 불가능하고 값이 있어야만 사용할 수 있다

const가 절대적 상수는 아니기에 상수는 대문자 사용이 관례다

우선순위를 const > let > var로 정하자

const는 비교적 엄격하지만 언급했다 시피 값을 아예 바꿀 수 없지는 않다
배열 하나의 요소, 오브젝트 하나의 값을 바꾸는건 가능하다

오브젝트와 배열을 const로 선언하고 바꿔보았는데
둘 다 전체를 변경하려 하면 에러가 나오고
하나의 요소는 변경이 가능했다!
const는 이 경우에만 변경이 가능한 것으로 보인다리우스

profile
안녕하시오?

0개의 댓글