15 Jan 2021
|
javascript
호출 스케쥴링
일정시간이 지난후에 원하는 함수를 예약 실행(호출)할 수 있게 하는것을 뜻한다.
-
setTimeout: 일정 시간이 지난 후에 함수 실행, clearTimeout함수로 취소 가능
-
setInterval: 일정 간격을 두고 함수 실행, clearInterval함수로 취소 가능
setTimeout와 setInterval에 넘긴 함수를 참조하는것이 없어도 가비지 컬렉션의 대상이 되지않는다. setTimeOut와 setInterval에 함수를 넘기면 함수에대한 내부참조가 새롭게 만들어지고 이 참조 정보는 스케줄러에 저장이 되기 때문이다.
clearTimeout,clearInterval
setInterval의 경우 clearInterval이 호출되기 전까지 함수에대한 참조가 메모리에 유지된다.
setInterval이든, setTimeout이든 메모리 공간에대한 부작용이 발생 할 수 있으니 스케줄링할 필요가 없어진 함수는 아무리 작더라도 clearTimeout혹은 clearInterval함수로 취소하자
12 Jan 2021
|
javascript
재귀이해하기를 보고 정리했습니다.
재귀란?
함수가 자기 자신을 호출하는 순간을 뜻한다.
재귀의 3가지 특성
-
종료조건
if(나쁜 값이 들어오면){ 정지! } 와 같은 종료 조건이 들어오는데,이는 재귀의 안전장치 이다. * 필수는 아니다. 만약 기반 조건이 곧 종료조건이라면 생략가능하다.
-
기반 조건 (Base Case,기저상태)
if(이런 일이 일어난다면){성공!}과 같이 이해하면된다.
-
재귀
함수가 자기 자신을 호출한다.
궁극적으로..
재귀는 단순히 중첩된 함수 호출이다.
모든 중첩된 함수에서 가장 내부에 중첩된 함수가 가장 먼저 변화되는 구조다.
11 Jan 2021
|
javascript
기명함수 표현식이란?
이름이 있는 함수표현식을 말한다.
EX)
// 기명함수표현식 X
const name = function(){
...
}
// 기명함수표현식 O
const name = function fn(){
...
}
기명 함수 표현식은 함수표현식 내부에서 자기 자신 참조가 가능하고, 기명함수 표현식 외부에서 그 이름을 사용하지 못한다고한다.
EX)
let sayHi = function func(who) {
if (who) {
alert(`Hello, ${who}`);
} else {
func("Guest"); // func를 사용해서 자신을 호출합니다.
}
};
sayHi(); // Hello, Guest
// 하지만 아래와 같이 func를 호출하는 건 불가능합니다.
func(); // Error, func is not defined (기명 함수 표현식 밖에서는 그 이름에 접근할 수 없습니다.)
11 Jan 2021
|
javascript
오래된 var
var는 블록스코프가 없다.
var로 선언한 변수는 함수 스코프이거나 전역 스코프이다. 떄문에 블록 밖에서 접근 가능하다.
호이스팅
호이스팅이란 변수가 끌어 올려지는 현상을 말하는데, 주로 var에서 나타난다고한다.
변수를 먼저 선언후,변수를 콘솔찍은 다음에 변수를 할당해주는거를 호이스팅이라고 하는것같다.
EX)
var name;
console.log(name);
name = '중식';
//결과
중식;
위의 코드처럼 변수할당을 나중에해줘도 변수가 위로 끌어올려져서 콘솔이 잘 찍히는 모습이다.
호이스팅에는 중요한점이 있다.
선언은 호이스팅 되지만, (EX)var name;
할당은 호이스팅 되지않는다. (ex) var name = "정중식"
07 Jan 2021
|
javascript
JSON과 메서드에대해서 정리했습니다. JSON에대한 모든 메서드를 정리한 것은 아니고 자주 사용되는 메서드 두개를 정리했습니다.자세한건 클릭
JSON의 유래
JSON은 JavaScript Object Notation의 약자로 값이나 객체를 나타내주는 범용 포맷으로,자바스크립트에서 사용할 목적으로 만들어졌다.
근데,라이브러리를 사용하면 다른 언어에서도 충분히 JSON을 사용 할 수 있어서,JSON을 데이터 교환 목적으로 사용하는 경우가 많다.
자바스크립트가 제공하는 JSON 메서드
- JSON.stringify
- 객체를 JSON으로 바꿔준다.
객체는 문자열로 변환된 후에야 비로소 네트워크를 통해 전송,저장이 가능한데,이 메서드를 사용하면 객체를 문자열로 변환시켜줄 수 있다. 여기엔 몇가지 규칙이 있는데,
- JSON으로 인코딩된 객체는 작은따옴표,백틱을 사용할 수 없다. 오롯이
큰 따옴표만 사용가능하다.
- 객체 프로퍼티 이름은 큰 따옴표로 감싸야 한다.
Ex) age:30 => “age”:30
- JSON.parse