본문 바로가기
반응형

개발/Javascript42

얕은 복사와 깊은 복사 원시값과 참조값 원시값은 변경할 수 없다. (변수를 변경할 수 없다는 것이 아니다.) 그렇기 때문에 원시값을 할당한 변수를 재할당하면 새로운 메모리 공간에 새로운 값을 재할당한다. 하지만 참조값은 메모리 공간의 주소를 가리킨다. 이 주소를 참조값이라고 하는데 이 참조값에 접근하여 객체에 접근하는 방식이다. 같은 참조를 공유하는 객체들은 1개 이상일 수 있고, 같은 참조를 공유하는 객체들은 서로 사이드이팩트를 일으킬 수 있따. 얕은 복사 복사를 새로운 메모리 공간을 만드는 것이라고 정의했을때, 얕은 복사는 1depth까지만 복사를 한다는 뜻이다. 즉, 2depth부터는 같은 참조를 가리키기 때문에 사이드이펙트가 일어난다. 전개구문을 이용하여 얕은복사를 할 수 있다. const a = {name:'j',a:.. 2021. 8. 7.
js 클로저 1. 클로저의 개념 클로저를 MDN에서 찾아보면 '함수와 함수가 선언된 어휘적 환경의 조합' 이라고 나와있다. 무슨말인지 모르겠다. 다행히 코드스테이츠에서 이해하기 쉽게 설명을 해주었다. 그걸 내가 한문장으로 요약해봤는데, 여러분들에게도 알려주자면 함수를 리턴하는 함수일때 리턴당하는 내부함수가 외부함수의 변수에 접근할 수 있다면, 리턴되는 내부함수를 클로저라고 함. 한편, 클로저는 리턴하는 함수에 의해 스코프(변수의 접근 범위)가 구분된다. 클로저의 핵심은 스코프를 이용해서 변수의 접근 범위를 조정하는 것에 있다. 함수를 리턴하는 것 만큼 중요한 것이 변수가 선언된 곳이다. 보라색 block이 외부함수, 노란색 block을 내부함수라고 하면 adder는 함수를 리턴하는 함수이고 내부함수는 외부함수의 변수.. 2021. 8. 4.
JS : 선언자 let, const가 var보다 권장되는 이유 let, const, var의 특징을 설명하기 전에 스코프의 종류부터 간단히 소개하겠다. 스코프의 종류 블록스코프(block scope) : 조건문, 반복문 등등 중괄호로 둘러싼 범위, 화살표함수도 블록스코프임 함수스코프(function scope) : 함수로 둘러싼 범위 말로 설명하는것보다 코드스테이츠의 학습자료를 보는것이 이해가 훨씬 잘 될 것같다. 유의해야할 점은 화살표 함수는 블록 스코프이다. let, const, var let, const, var 은 변수를 선언하는 선언자 이다. 블록 스코프에서 let을 이용하여 선언된 변수 i 에는 블록 범위를 벗어나는 즉시 접근할 수 없다. for (let i = 0; i < 5; i++){ console.log(i); } console.log('final.. 2021. 8. 4.
JS : 변수의 유효범위 Scope, 지역변수와 전역변수 Scope : 변수 접근 규칙에 따른 유효범위 안쪽 스코프에서 선언한 변수는 바깥쪽에서 사용불가능 스코프는 중첩이 가능하다 가장 바깥쪽의 스코프는 전역 스코프이다. 전역이 아닌 다른 스코프는 모두 지역 스코프임. 지역변수는 항상 전역변수보다 높은 우선순위를 가진다. 1. 안쪽 스코프에서 선언한 변수는 바깥쪽에서 사용불가능 let name = 'june' if(name){ let talk = `hello ${name}!`; console.log(talk) // hello june! } console.log(talk); //Error 변수 'talk' 는 2~5 조건문 안에서만 유효하다. 2. 스코프는 중첩이 가능하다. 3. 가장 바깥은 전역 스코프이고 그 외는 다 지역 스코프이다. 전역스코프안의 변수를 전.. 2021. 8. 4.
반응형