자바스크립트 사용하면서 자주 잊는 것, 놓친 것, 기억해두어야 할 개념등의 정리
undefined 와 null
자바스크립트에서 사용되는 특별한 값.
값이 할당되지 않음을 나타냄. 변수를 선언 하고 초기화를 하지 않으면 undefined가 할당된다.
is not defined와는 다르다. 이는 아예 정의되지 않은 변수를 호출하거나 했을 때 발생하는 에러이다.
자바스크립트에서 null값은 "객체가 없음"을 나타내기 위해 명시적으로 할당해야 한다.
자바스크립트 변수 스코프
자바스크립트는 함수를 이용하여 변수 스코프를 정의한다.
var 를 사용하지 않으면 파싱단계가 아닌 전역변수 스코프에 정의된다.(EX> 브라우저환경에선 window 객체)
렉시컬 특성? 변수 검색시 실행 환경이 아닌 함수를 정의한 코드의 문맥을 근거로 판단한다는 것.
var x= "global";
function f() {
alert(x); //undeinfed 출력
var x = "local"; // x 변수 선언
alert(x); //local 출력
}
f();
위 코드에서보면 함수 f 안에서 변수 x를 정의하는 문구가 있다. 이 경우 전역레벨 파싱 후, 함수 f 레벨의 파싱이 일어날때 함수 f의 변수 x가 정의가 된다. 이런 특성을 자바스크립트의 렉시컬 특성이라 한다.
자바스크립트 함수의 파라미터 기본값 설정
function setDefault(a, b) {
a = a || "에이";
b = b || 123;
}
위와 같은 형태로 파라미터가 없을시 기본값을 설정 할 수 있다.
이는 자바스크립트의 논리연산 특징인 좌측 피연산자가 참일경우 좌측피연산자의 최종 평가값을 반환, 거짓일 경우 우측 피연산자의 최종 평가값을 반환하는 특성 대문이다.
즉, a가 null이면 우측을 반환 아니면 a를 반환한다.
setTimeout(code,delay)
code : 일정시간 후 실행시킬 자바스크립트 코드를 포함한 문자열
delay : 문자열 code 내에 있는 자바스크립트 코드가 실행되기까지 걸리는 시간 (1/1000초 단위)
with<-문법
유효범위 체인(변수 이름 판별을 위해 순서대로 검색되는 객체 리스트) 을 임시로 변경할 때 쓰임
ex>
하나의 엘레멘트에 접근 할시 frames[1].document.forms[0].address.value
라 쓰는것을
with(frames[1] .document.forms[0])
{
//폼엘레먼트에 직접접근이 가능하다
name.value = "";
address.value = "";
email.value = "";
}
그러나 이 문법은 코드를 최적화 어렵고, with문 내부에서 함수정의나 변수초기화를 하면 비직관적이고 예기치않은 작동을 불러일으킬 수 있기 때문에 사용하지 않는 것을 권한다.
따라서 with문 보다 다음의 방식을 이용하길 권한다.
var form = frames[1] .document.forms[0];
form.name.value = "";
form.address.value = "";
form.email.value = "";
함수가 정의되어 있을때(ex>function f(){}) var a = f(); 와 a=f의 차이.
var a = f();
는 함수의 리턴값을 받아오고
var a = f; 라 하면 a가 함수 f와 마찬가지가 된다.
'javascript' 카테고리의 다른 글
[HTML] HTML Attribute와 javascript Property (0) | 2014.04.08 |
---|---|
[javascript] 자바스크립트 함수 escape() unescape() (0) | 2011.12.06 |