Back Ground

구문 본문

Javascript

구문

Back 2016. 9. 8. 11:42

구문

  1. 어떤 일을 하기 위해 실행되는 것.
  2. 글의 짜임.
  3. 컴퓨터에서 원시 언어의 문장을 올바르게 구성하기 위한 규칙.

자바스크립트는 순서대로 실행되는 구문들의 집합이다. 표현문,조건문,루프문,점프문 등이 있다.

 구문블록은 여러 구분을 중괄호로 감싼 

 - 세미콜론으로 끝나지 않음

 - 들여쓰기를 해주는 것이 좋다 (가독성이해도)

 - 안에서 선언된 변수는 지역변수가 아닌 전역변수이다





표현문 


greeting ="hello"+name;  
i *= 3;                    할당문
counter++;                 증감 연산자
delete o.x;                delete연산자
alert(greeting);       
window.close();            함수호출



가장 간단한 형태 : 부수효과가 있는 표현식

할당문 , 함수호출 등이 있음


[출처] 구문|작성자 미진보걸




복합문과 빈 구문 


복합문은 하나의 구문이 있어야할 곳에 여러 구문을 사용할 수 있게 한다.
빈 구문은 하나의 구문이 있어야할 곳에 아무런 구문도 없는 것이다.
자바스크립트 인터프리터는 빈 구문을 만나면 아무것도 실행하지 않는다.

    for(i = 0; i<a.lengh;a[i++]=0);
    //배열 a를 초기화한다.

 하나의 표현식 안에 여러 표현식을 합칠 때에는 쉼표(,)연산자를 사용

[출처] 구문|작성자 미진보걸


 구문

자바스크립트 인터프리터는  구문을 만나면 아무것도 실행하지 않는다

 - 종종 몸체가 비어있는 루프를 만들  유용

 - 임의로  구문 사용시 코드에 고의로 사용했다는 설명을 주석으로 표시



[출처] 구문|작성자 미진보걸




선언문


var 과 function은 각각 변수와 함수를 선언하는 선언문이다. 

함수 내부에서 사용하는 var문은 지역변수로 정의되고 함수 내에서만 사용할 수 있다. 
함수선언문은 함수이름을 식별자로 갖는다. 


 식별자를 정의변수나 함수를 생성하는 중요한 역할을 담당

var, function  삭제할  없는 변수를 만듬


 var

변수를 정의하는  쓰임

쉼표로 구분되어 여러 개를 한번에 선언 가능

초기화 하지 않으면 undefined 값을 가짐


function

함수를 정의하는  쓰임

유일한 이름을 가짐

선언문 문법

function 함수이름(전달인자1, 전달인자2,  ,전달인자n) {

구문

}

[출처] 구문|작성자 미진보걸

[출처] 구문|작성자 미진보걸






조건문


if,switch문이 있다.


 특정 표현식의 값에 따라 구문을 실행시키거나 건너뛴다

 if

단순히 어떤 결정을 내리거나조건에 따라 좀더 정교하게 구문들을 실행할  있도록 한다

형태 (표현식이 true 이면 실행)

 - if (표현식)

구문

 - if (표현식)

구문1

   else

구문2



 else if

조건문을 평가한 결과에 따라 여러   하나의 코드를 실행하게 해준다

 



 switch

switch(구문) {

표현식

}

표현식의 모양

case 1:

//코드블록 1실행

break;

case 2:

//코드블록 2실행

break;

case 3:

//코드블록 3실행

break;

default:

//코드블록 4실행

break;

[출처] 구문|작성자 미진보걸




루프문


while,do-while,for,for/in 문이 있다.

function tail(o){
    for(;o.next;0=0.next)
    return o;
}
//링크드리스트의 자료구조를 순회하고,리스트의 마지막 객체를 반환하기 위한 for 루프

이 예제는 초기화표현식을 사용하지 않았다. 세표현식이 반드시 있어야할 필요는 없지만, 
이들을 구분하는 두 개의 세미콜론은 반드시 존재해야 한다. 

  • 테스트 표현식이 빠지면 무한루프가 된다. 

for/in문은 for문과는 전혀 다른 종류다.

for(변수 in 객체)
    구문

변수는 var문이어야 한다.
객체는 객체로 평가되는 표현식이어야 한다.

var a = [1,2,3,4,5];
for(var b in a)
    console.log(a[b]);

for/in문을 실행하기 위해서 자바스크립트 인터프리터는 먼저 객체 표현식을 평가한다. 
표현식이 null,undefined 이면 인터프리터는 해당 루프를 중단하고 다음 구문을 실행한다. 
표현식이 원시값이면 값과 상응하는 Wrapper 객체로 바뀐다. 
이 외에 표현식은 객체로 평가된다. 
인터프리터는 객체 표현식을 평가한 다음 변수 표현식을 평가한 후 객체의 각 열거 가능한 프로퍼티 이름을 변수에 할당한다. 
이는 루프가 매회 시작하기 전에 실행된다.


 while, do/while, for, for/in 4개의 루프문이 있다

표현식이 true 이면 루프 실행

 

while

while(표현식)

구문

 

do/while

적어도 한번은 루프 몸체가 실행

끝에 세미콜론이 붙음

do

구문

while (표현식);

 

for

세미콜론으로 구분된 세가지 표현식을 가짐

for(초기화테스트증가)

구문

for(;;) == while(true)


 for/in

for키워드를 사용하지만 일반적인 for 루프와는 다른 종류

자마에서 확장 for 문과 비슷

어느  객체에 있는 속성을 차례대로 한번씩 꺼내오는 역할 (배열 등에 이용)

for( 변수 in 객체)

 

) a 배열의 모든 프로퍼티 값을 b가 참조하는 Array 로 복사

var a= {x:1, y:2, z:3};

var b= new Array();

var I = 0;

for ( b[i++] in a);

 



[출처] 구문|작성자 미진보걸


점프문


인터프리터가 점프문을 만나면 소스 내의 특정 위치로 건너 뛴다.
자바스크립트 인터프리터가 점프문을 만나면 특정 위치로 건너뜀

[출처] 구문|작성자 미진보걸

레이블

식별자:구문
test:while(){} 

break 
break; break 레이블; 
가장 안쪽의 루프 혹은 switch문에서 빠져나온다. 

continue 
continue; continue 레이블;
지정된 표현식을 다시 테스트. 

return 
return 표현식;
함수 몸체 내부에서만 나타날 수 있다.
함수 구문이 return 문을 만나면 return 문의 표현식을 실행한다.

throw 
예외를 발생시킨다.
throw 표현식; 
if(x<0)throw NEW ERROR("message"); 
에러가 발생되면 인터프리터는 가장 까가움 catch절로 넘어간다. 
만약 해당 함수 내에서 예외를 처리할 try/catch/finally문을 찾을 수 없다면 함수를 호출했던 
블록으로 예외가 전파되어 올라간다. 예외처리기를 찾을 수 없는 경우 예외는 에러로 취급되고 사용자에게 보고된다. 


try/catch/finally
try - 예외가 발생할지도 모르는 코드 블록을 정의하는 역할을 한다. *cahtch 나 finally 중 하나 이상 함께 사용해야 한다.
catch - try블록 내부에서 예외가 발생할 경우 호출되는 구문 블록이다. *생략가능
finally - 항상 실행이 보장되어야 할 뒷정리용 코드가 포함된다. *생략가능
return,continue,break 문을 만나 try문을 빠져나갈때도 finally블록을 실행하고 빠져나간다.

while문으로 for문 흉내내기
i=0;
while(i<10){
    try{alert(i);}
    finally{i++;}
}

 레이블

프로세스의 흐름을 관리하는데 사용하기 위해 사용하는 인식표

어떤 구문에라도  앞에 식별자 이름과 콜론을 넣음으로 레이블을 붙일  있다

식별자구문

 break

반복하던 행위를 끝마치고 구문 밖으로 나온다

루프나 switch   내부에서만 적법하다

break 키워드와 레이블 이름 사이에는 줄바꿈이 허용되지 않음

(자바스크립트가 생략된 세미콜론을 자동으로 넣어주기 때문)

break;          break 레이블이름;


 continue

break 문과 유사하지만 루프를 빠져 나오지 않고 새로운 반복을 시작한다

항상 루프의 몸체 내부에서 사용해야 한다.

continue;      continue 레이블이름;

 

return

함수호출 표현식의 ,   함수에서 반환되는 값을 지정하는  쓰인다

오직 함수 몸체 내부에서만 나타날  있음

return 키워드와 표현식 사이에는 줄바꿈이 허용되지 않음

(자바스크립트가 생략된 세미콜론을 자동으로 넣어주기 때문)

return 표현식;

 

throw

예외의 값을 평가해서 보내 알린다

예외가 발생하면 자바스크립트 인터프리터는 정상적인 프로그램 실행을 즉시 중단하고 가장 가까운 예외처리기로 넘어간다

예외처리기를 찾을  없을 경우 해당 예외는 에러로 취급되고 사용자에게 보고된다

throw 표현식;


try / catch / finally

예외처리 기법

try : 단순히 예외가 발생할지도 모르는 코드 블록을 정의

catch : try 블록 내부에서 예외가 발생할 경우 호출

finally : try 블록에 일어난 상황과 관계없이 항상 실행이 보장 되어야  뒷정리용 코드가 포함

try 블록은 catch, finally   하나이상의 블록과 함께 사용되어야 한다

 

try{

}

catch (e) {

//try 블록에서 예외가 발생되어야만 실행 되는 부분

//throw  사용해서 예외를 다시 발생시킬 수도 있다

}

finally {

// try 블록에 일어난 일과 관계없이 try 블록이 종료되면 실행

}

[출처] 구문|작성자 미진보걸



 

기타구문


with(객체)구문 유효범위 체인의 확장(엄격한 모드 사용 안된다.) 
debugger debugger; 해당 위치에서 정의된 코드 디버깅을 수행한다. 
use strict "use strick"; 스크립트나 함수를 엄격한 모드로 제한 시킨다. 



 with, debugger, use strict


with

유효범위 체인을 임시로 변경하려   쓰임

유효범위 체인의  번째에 '객체' 추가   '구문' 실행한 다음 유효범위체인을 '객체추가하기 전으로 되돌림

엄격한 모드에서 사용   없고 with  사용시 현저하게 느려지기 때문에 사용을 자제해야 한다

주로 깊이 중첩된 객체 계층 구조를 좀더 쉽게 다루기 위해 사용

with (객체)

구문


debugger

디버거가 실행 중일  자바스크립트 구현체는 해당위치에서 정의된 코드 디버깅을 수행

중단점과 같이 동작



"use strict"

ECMAScript5 에서 처음 소개된 지시어

지시어지만 구문에 가깝다

일반적인 구문과의 차이점

 - 키워드 목록에 포함되지 않음

 - 스크립트의 시작 부분이나 함수 몸체의 시작 부분에만   있다

   (하지만 반드시 스크립트나 함수의 시작 부분이  필요는 없다)

사용이유는 지시어 다음에 오는 코드들이 엄격한 모드를 따르게 하기 위해서다

엄격한 모드와 일반모드의 차이점 (중요3가지)

 - with 문은 엄격한 모드에서 사용할  없다

 - 모든 변수는 반드시 선언 되어야 한다

 - 함수가 메서드가 아닌 함수로 호출   this  값은 undefined 된다.






구문 요약

구문

문법

용도

break

break 레이블;

가장안쪽의 루프, switch 또는 '레이블' 명명된 구문에서 빠져나온다

case        

case 표현식;

switch 내부의 구문에 레이블을 붙인다

continue

continue 레이블;

가장 안쪽의 루프또는 '레이블' 명명된 루프를 재시작한다

debugger

debugger;

디버거 중단점

default

default;

switch문에서 디폴트 구문에 레이블을 붙인다

do/while

do 구문 while(표현식);

while 루프를 만드는 다른 방법

empty

;

아무 일도 안함

for

for(초기화테스트증가)구문

편리하게   있는 루프

for/in

for(변수 in 객체)구문

객체에 속한 프로퍼티들을 열거한다

function

function 이름(전달인자,){

구문}

'이름'이라는 함수를 선언한다

if/else

if(표현식){구문1} else{구문2}

구문또는 구문2 실행한다

label

레이블 : 구문

'구문' '레이블'이라는 이름을 붙인다

return

return 표현식;

함수에서 값을 반환한다

switch

switch(표현식){구문}

case 또는 default: 레이블이 붙은 구문들로 다중 분기

throw

throw 표현식;

예외를 발생시킨다

try

try {구문}

catch(식별자){구문}

finally{구문}

예외를 잡아낸다

use strict

"use strict";

스크립트나 함수를 엄격한 모드로 제한 시킨다

var

var 이름 =값 , … ;

하나 이상 변수의 선언과 초기화

while

while (표현식구문

기본적인 루프 생성문

with

with (객체구문

유효범위 체인의 확장 (엄격한 모드에서 사용 불가)

[출처] 구문|작성자 미진보걸

[출처] 구문|작성자 미진보걸

[출처] 구문|작성자 미진보걸





출처:

https://github.com/hckoo/javascriptstudy2013/blob/master/1202/5%EC%9E%A5%20%EA%B5%AC%EB%AC%B8.md

 http://blog.naver.com/venus9125/220514803478



Comments