- undefiend : 변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 정해지지(undefined) 않은 상태
- (어떤 값도 할당되지 않아서 자료형을 알 수 없음)
- script안에는 전역객체가 존재한다.
- 전역객체 window에 속성을 붙이는 일(함수안에서 var x =1 로 지역함수 선언해줄것)
- 함수도 객체이다.
new Function("파라미터","구현부분;");
파라미터안에 형식없음 (var (X) )
표기식 선택가능
함수는 객체
add가 함수객체를 참조한다.
마지막: 선언하면서 동시에 대입
두번째를 가장많이 쓴다.
문장이끝나면 세미콜론쓰자
함수정의 방법
1. var add = function(x,y){ }
변수는 미리준비되어있지만 그 변수가 function은 아니다. (대입이 아직 안되었기때문이다)
함수보다 우선해서 함수를 호출할 수 없다.
2. function add(x,y) { }
변수선언과 동시에 같이 대입이되서 함수를 밑에다 정의해도된다.
지역화
스크립트에서는 중괄호가 변수 영역을 나누지않음
밖에서 a를 볼수도 쓸수도없다.
x = 1;로 선언을 하면 오류가 안난다.
전역변수에 x가 붙는다.
var x = 1;로 선언을 하면 오류가 난다. (지역변수)
x 는 완전히함수의 지역변수
함수가끝날때 스택에서 사라진다.
객체안에서 객체를 정의하듯이 함수안에서 함수를 정의한다.
f2의 역할이 f1의 a를 반환하는것
우 : a가 사라지지않는다.
이유 : f2()때문이다.
참조변수는 참조하는애가있으면 안사라져요
f2가 x를 계속쓰니까 f1의 x가 죽지못하고 살아난다.
리턴된 f2가사라질때까지
리턴된 함수를 클로저라고부른다
Q. var f = f1();
f1() : f1의 리턴값을 줘 ->f2()
Q. var a = f 가아니라 var a = f() 인 이유 ?
var a = f 이면 a도 f1()을 가리키게된다.
Q. var a = f(); 의 의미
f() 참조변수 f가 가리키는 f2()의 반환값을 호출한다.
함수는 함수를 반환할 수있다.
f는 자기가 갖고있는 지역변수가 없다. 자기 outer함수의 지역변수를 반환하고있다.
f1()이 반환되고 끝났음에도 f1()의 지역변수는 죽지않고 살아있다.
f1의 반환값이 함수가아니라 x였다면
f1()이 호출되고 반환하고 지역변수는 사라진다
함수는 함수를 반환할 수 있다. 반환할때 inner함수가 outer변수를 사용한다면 outer변수가 사라지지않는일이 발생한다.
의도적으로 한게아니라면 주의해야한다
'2021 Newlecture > Javascript' 카테고리의 다른 글
window.addEventListener / setTimeout() { } (0) | 2021.04.16 |
---|---|
스크립트 작성 방식 / 변수명명규칙 /innerText/ getElementById(" ") /getElementsByClassName (0) | 2021.04.15 |
confirm / 스크립트코드 작성영역 / onclick (0) | 2021.04.14 |
브라우저 플랫폼 / parseInt(문자열->정수) (0) | 2021.04.13 |
선언과 실행순서 / 자바스크립트의 전역변수 / 동일한 변수 선언시 / (0) | 2021.04.09 |
eval() / JSON Parse / ===참조비교 / for in (0) | 2021.04.08 |
splice() / slice() / indexof() / JSON생성방법 (0) | 2021.04.07 |
배열 / push/ pop / shift (0) | 2021.04.06 |