Web-Programming/Javascript

[Javascript] 자바스크립트 기초,초급

yehza 2011. 8. 31.

오늘은 자바스크립트 기초를 정리해 보겠습니다.

누구나 알고 쓰지만 매번 찾아 보게 되는 내용으로 정리해 볼려고 합니다. 조금은 개략적인 내용입니다.

1. 코드 작성 준비

자바스크립트 코드는 (X)HTML의 <head>안의 <script> 태그 안에 작성하면 됩니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd"> 
<html> 
<head> 
<script type="text/javascript"> 
// 스크립트가 들어가는 곳 
</script> 
</head> 
<body> 
</body> 
</html>


혹은 <script> 태그의 src 속성을 사용하여 외부의 js 파일을 인클루드 할 수 있습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd"> 
<html> 
<head> 
<script type="text/javascript" src="myjs.js"></script> 
</head> 
<body> 
</body> 
</html>


여기서 중요한점은 다음과 같은 방법으로 작성을 하면 해당 스크립트가 작동하지 않습니다.

<script type="text/javascript" src="myjs.js"/>


왜일까요? XML공부를 하다보면 값이 없는 것을 표현하는 방법으로는 <script></script> 나 <script/> 둘다 같은 표현 방법인데요.

XHTML strict의 DTD를 한번 봐볼까요

<!ELEMENT script (#PCDATA)> 
<!ATTLIST script 
  id          ID             #IMPLIED 
  charset     %Charset;      #IMPLIED 
  type        %ContentType;  #REQUIRED 
  src         %URI;          #IMPLIED 
  defer       (defer)        #IMPLIED 
  xml:space   (preserve)     #FIXED 'preserve' 
  >


script에는 PCDATA(문자열)이 들어가야만 하는군요. 일반적으로 그냥 닫을 수 있는 녀석들은 어떻게 선언되어있는지 볼까요?

<!ELEMENT img EMPTY> 
<!ATTLIST img 
  %attrs; 
  src         %URI;          #REQUIRED 
  alt         %Text;         #REQUIRED 
  longdesc    %URI;          #IMPLIED 
  height      %Length;       #IMPLIED 
  width       %Length;       #IMPLIED 
  usemap      %URI;          #IMPLIED 
  ismap       (ismap)        #IMPLIED 
  >
 
   
   
<!ELEMENT br EMPTY>   <!-- forced line break -->

 

<!ELEMENT hr EMPTY>



img, br, hr같은 태그들은 기본적으로 EMPTY속성입니다. 값이 존재할수가 없군요. 속성만을 가질 수 밖에 없는 슬픈 녀석들입니다.

위의 태그들은 다음과 같이 바로 닫아 써도 됩니다.

 <img src="image.jpg" alt="이미지"/>


2. 세미콜론의 사용 여부

자바스크립트는 컴파일되어 실행되는 언어가 아닌 각 브라우저의 인터프리터들이 한줄단위로 실행하는 언어입니다.

정확하게는 하나의 명령문 단위로 실행이 되며 한줄에 하나의 명령이 존재한다면 세미콜론을 사용하지 않아도 사용에 아무런 문제가 없습니다.

var value = 'Hello World!' 
alert(vaule)


하지만 위의 명령을 한줄에 표현할려면 세미콜론을 사용하여야 합니다.

var value = 'Hello World!'; alert(vaule);


작동한다는것에 연연하지 말고 각 명령문이 끝날때마다 세미콜론을 붙여주는 것이 좋겠네요.

var value = 'Hello World!'; 
alert(vaule);


3. 주석

자바스크립트에서는 다음과 같은 주석을 사용할 수 있습니다.

// 이것은 한줄만 주석으로 지정 할 수 있습니다.


/* 이것은 여러줄을 
주석으로 
사용할 수 있습니다.*/


<!-- 이것은 한줄만 주석으로 사용할 수 있습니다. HTML 주석과 달리 종료 구문이 없습니다.


4. 변수

변수(Variables)는 말그대로 "변하는 수" 입니다. 어떤 변수를 생성하고 그 변수에 특정한 값을 할당 할 수 있습니다.

자바스크립트에서는 이 변수의 선언을 다음과 같이 합니다.

var number; 
var str;


다음과 같이 한번에 선언할 수도 있습니다.

var number, str


선언한 변수에 다음과 같은 방법으로 값을 할당해 봅시다.

number = 12; 
str = 'Hello World!';


다음과 같이 선언과 동시에 값을 할당 할 수도 있습니다.

var number = 12; 
var str = 'Hello World!';


자바스크립트의 변수는 대소문자를 구별합니다.

또한 자바스크립트의 변수는 변수에 형 지정을 하지 않습니다. 어떤 형태의 값도 들어갈 수 있고 중간에 형이 바뀔수도 있습니다.

var res = '문자열'; 
res = 27;


위와 같은 경우도 아무런 문제가 없습니다.

5. 문자열

다음과 같이 문자열 변수를 선언할 수 있습니다.

var str = "Hello"; 
var str = 'World';


보시면 아시겠지만 큰따옴표와 작은 따옴표가 모두 동일하게 사용됩니다.
위의 두가지는 동일한 결과를 가져옵니다.

문자열중에 또 따옴표를 사용할려면 다음과 같은 방법이 있습니다.

var str = "Hello \"eye\""; 
var str = 'Hello "eye"'; 
var str = "Hello 'eye'";


위에서 알 수 있듯이 큰따옴표 작은 따옴표를 필요에 따라 사용해도 됩니다. 또는 이스케이프 문자(\)를 사용하여 표현 할 수 있습니다.

6. 숫자

자바스크립트에서는 양/음수 및 소수를 포함한 어떤 숫자라도 자유롭게 사용할 수 있습니다.

var num = 12; 
var num = -12; 
var num = 12.34; 
var pi = 3.14253777777777;


7. 참거짓

다음과 같이 Boolean 값을 표현할 수 있습니다.

var isTrue = true; 
var isTrue = false; 
var isTrue = "true";


3번째의 따옴표로 묶여있는 true는 참이 아닌 문자열 true이겠죠.

8. 배열

자바스크립트의 배열은 어떻게 보면 매우 편리하고 어떻게 보면 정말 개판입니다;;

다음과 같이 생성자를 이용하여 배열을 생성할 수 있습니다.

var fruits = new Array(4); // 크기가 4인 배열 
var fruits = new Array(); // 크기를 알 수 없는 배열 
var fruits = new Array('apple', 'tomato', 'melon', 'strawberry');


또는 다음과 같은 방법으로 직접 생성할수도 있습니다.

var fruits = ['apple', 'tomato', 'melon', 'strawberry'];


다음과 같이 값을 입력할 수 있습니다.

fruits[0] = 'apple'; 
fruit['tomato'] = 'tomato';


신기하게도 배열의 크기를 지정하지 않고도 얼마든지 마음껏 값을 집어넣을 수 있고, 크기를 4로 선언했더라도 그 이상의 값을 넣을 수 있습니다.

자동으로 배열의 크기가 확장됩니다.

또한 숫자형 인덱스가 아닌 위의 tomato와 같은 문자형 인덱스도 사용할 수 있습니다.

물론 내부에선 숫자가 붙어 사용됩니다.
Thanks to AccessDenied

위의 예제에서 볼수 있는 문자로 인덱스명을 붙일 경우에는 배열이 아닌 Array객체의 Property로 들어가게 됩니다.

 var fruits = new Array(); 
fruits['tomato'] = 'red'; 
alert(fruits.length); // fruits 배열의 길이는 0 
 
fruits[0] = 'yellow'; 
alert(fruits.length); // fruits 배열의 길이는 1 
 
fruits['1'] = 'green'; 
alert(fruits.length); // fruits 배열의 길이는 2 
 
alert(fruits.join(',')); // yellow, green 출력됨


위의 예제에서 알 수 있듯이 인덱스가 문자열일 경우에는 배열로 들어가지 않고 객체의 Property로 들어가게 되며 숫자일 경우에는 따옴표의 여부와 상관없이 배열값으로 들어가게 됩니다.

9. 조건문

자바스크립트의 조건문은 어느 프로그래밍 언어와 동일합니다.

if (condition) { 
  명령문들; 
}

이상의 값을 넣을 수 있습니다.

condition에서 사용될 수 있는 비교 연산자로는 크다(>), 작다(<), 크거나같다(>=), 작거나같다(<=), 같다(==)가 있습니다.

하지만 한가지 다른것이 있습니다. 같다(==)와 별개로 완전히같다(===)가 있습니다.

Equal(=)를 3개를 사용하며 값의 타입까지 같을 경우 참을 반환합니다.

자바스크립트의 너그러운 문법에 의해 다음과 같은 상황이 일어납니다.

var value = '1'; 
 
if(value == 1) alert('running'); // 실행된다. 
if(value === 1) alert('not running'); // 실행되지 않는다.


value에는 문자열 "1"을 담았지만 숫자 1과 비교를 한다. ==를 사용하면 참이 나오지만 ===를 사용하면 거짓이된다.

실제로 prototype.js 의 소스를 보다 보면 다음과 같은 문구가 나온다.

if (value === false || value === null) {}


Boolean이나 null값 체크를 타입까지 정확하게 확인하는것을 알 수 있다. 알아두자.

10. 함수

다른 프로그래밍 언어와 동일한 함수이다. 다음과 같은 형식을 갖는다.

function 함수이름(인수들) { 
  명령문들; 
}


자바스크립트는 신기하게도 함수도 변수에 담을 수 있다. 정확하게는 Pointer의 개념일 것이다.





공부하고자 저장해뒀던 부분인데..저 처럼 아무것도 모르고 덤벼들 분들을위해서..ㅎ
글쓴분의 허락도 못구하고 기재합니다..

사실어디서 가져왔는지를..-          -;;;;;

댓글

추천 글