dev.Log
리액트 면접질문 본문
⚡리액트 state가 불변인 이유
쓰레드 세이프하다.
돌연변이(예상치 못한 상황)을 만들지 않는다.
React가 화면을 업데이트하는 과정
- setState를 호출 (혹은 부모로부터 props를 전달 받음)
- shouldComponentUpdate를 실행했는데 false를 리턴하면 여기서 멈추고, true를 리턴하면 다음 단계로 이동
- 가상 DOM과 실제 DOM을 비교해서 변경사항이 있으면 화면을 다시 그린다
Rest 파라미터 및 arguments 객체간 차이
* 둘 간의 차이를 잘 설명하는 블로그 참고하기
https://velog.io/@jinyongp/Rest-parameter-vs.-arguments
Rest parameter vs. arguments
Rest parameter와 arguments에 대해서
velog.io
Q.자바스크립트 클로저란?
클로저 : 클로저는 내부함수가 외부함수의 맥락에 접근할 수 있는 것을 가르킨다.
function outer(){
var title = 'coding everybody';
function inner(){
alert(title);
}
inner();
}
응집성이 떨어지므로 함수안에 함수를 선언해서, 그 함수안에서만 사용되는 함수로 내부함수를 선언한다.
내부 함수에서 title이라는 변수가 없다면 outer함수에서 변수를 찾게된다.
⭐내부 함수는 외부 함수의 지역변수에 접근할 수 있는데, 외부함수의 실행이 끝나서 외부함수가 소멸된 이후에도 내부함수가 외부함수의 변수에 접근할 수 있다. 이러한 메커니즘을 클로저라고 한다.
function outer(){
var title ='coding everybody';
return funtion(){
alert(title);
}
}
var inner = outter(); //outter의 리턴값
inner(); //outer의 title에 접근가능.....
outer은 이미 리턴했기때문에 실행이 끝났는데, 외부 함수의 변수에 여전히 접근가능함!
function factory_movie(title){ //외부함수
return { //객체
get_title: function(){ //내부함수1
return title;
},
set_title: function(){ //내부함수2
title = _title;
}
}
}
ghost = factory_movie('Ghost in the shell');
matrix = factory_movie('Matrix');
alert(ghost.get_title());
alert(matrix.get_title());
ghost.set_title('공각기동대');
alert(ghost.get_title()); //공각기동대
alert(ghost.get_title()); //Matrix
private variable(소프트웨어의 정보를 아무나 수정하도록 하는 것을 방지하는 것)
ghost객체는 get_title메소드와 set_title메소드를 가지고(담고) 있다.
비밀변수가 가능하다!!
title은 외부함수의 지역변수는 factory_movie라는 함수가 어떤 값을 리턴했을때
함수가 생이 마감되었기때문에 지역변수인 title은 내부함수 getTitle과 setTitle을
통해서만 접근할 수 있는것.!!!
BAD!!
var arr = []
for(var i =0; i< 5; i++){
arr[i] = function(){
return i;//function이 정의되는 시점의 i를 반환한다. 5만 출력됨!!!! i가 외부변수가 아니여서그럼
}
}
for(var index in arr){
console.log(arr[index]()); //arr[index]는 함수를 포함한 객체이다.
}
GOOD!
var arr= []
for(var i=0; i<5; i++){
arr[i] = function(id){ //id라는 매개변수를 가짐... 지역변수와 같은 효과를 가짐
return function(){
return id; //내부함수가 외부함수의 지역변수를 활용
}
}(i); //외부함수의 매개변수의 인자값으로 i
}
원하는대로 12345를 출력한다.
https://hyunseob.github.io/2016/08/30/javascript-closure/
JavaScript 클로저(Closure)
클로저란?MDN에서는 클로저를 다음과 같이 정의하고 있다. 클로저는 독립적인 (자유) 변수를 가리키는 함수이다. 또는, 클로저 안에 정의된 함수는 만들어진 환경을 ‘기억한다’. 흔히 함수 내��
hyunseob.github.io
아주 좋은 설명 !
'<FRONTEND>' 카테고리의 다른 글
transition과 transform (0) | 2020.07.12 |
---|---|
GNB, LNB, SNB, FNB (1) | 2020.07.11 |
ajax - Gson 활용 (0) | 2020.07.09 |
CORS (0) | 2020.07.07 |
Markdown (0) | 2020.07.07 |