본문 바로가기

javascript

[Javascript] 자바스크립트 요약 1

자바스크립트 사용하면서 자주 잊는 것, 놓친 것, 기억해두어야 할 개념등의 정리




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와 마찬가지가 된다.