반응형

# 자바스크립트 학습

# 오브젝트(Object)

## 프로퍼티 (Property)

  • 프로퍼티의 형태
{name: value}	// 이름: 값
  • name에 프로퍼티의 이름(키)를 작성하며, 따옴표 작성은 생략 가능하다.
var book = {
	title: "책",
    point: 123
};

// 따옴표 작성 생략의 경우, 자바스크립트가 따옴표를 작성하지 않아도 문자열로 간주하기 때문
  • value에 자바스크립트에서 지원하는 타입을 작성한다.
{a: 123, b: "ABC", c: true, d: {}}
{book: function(){코드}}
var book = {
	title: "책",
    point: {
    	ten: 10,
        bonus: 200,
        promotion: function(){}
    }
};
  • 오브젝트(Object)를 객체라고 부르기도 하지만, 여기서 오브젝트는 프로퍼티라는 실체가 있는 것을 의미.

## 프로퍼티의 추가, 변경

  • 오브젝트에 프로퍼티 추가, 변경
var obj = {};
obj.abc = 123;
obj 오브젝트에 프로퍼티 이름으로 abc가 없으면 abc:123이 추가되고,
abc가 있다면 프로퍼티 값이 123으로 변경된다.
  • 작성방법
1. 점과 프로퍼티 이름 사용
var book = {};
book.title = "JS책";
log(book);

=>
{title: JS책}


2. 대괄호 사용
var book ={};
book["title"] = "JS책";
log(book);

=>
{title: JS책}


3. 변수 이름 사용
var book = {title: "JS책"};
var varName = "title";
book[varName] = "HTML책";
log(book);

=>
{title: HTML책}

## Object 프로퍼티 값 추출

  • 오브젝트에서 프로퍼티 값 추출
var obj = {book: "책"}	// 일떄..
var value = obj.book;	// obj.book 시 value 에 "책"이 할당된다.
						// 만약 obj에 book 없을 경우 value에 undefined를 반환한다.
var obj = {book: "책"};
log(obj.book);
log(obj["sports"]);

=>
책
undefined

sports라는 프로퍼티 이름이 없으므로 undefined 반환

## for ~ in

  • 오브젝트에서 프로퍼티를 열거한다. (처음부터 끝까지 모두 읽음)
var sports = {
	soccer : "축구".
    baseball : "야구"
};
for (var item in sports) {
	log(item);
    log(sports[item]);
};

=>
soccer
축구
baseball
야구

# 빌트인(Built-in)

  • 값 타입, 연산자, 오브젝트를 자바스크립트 코드를 처리하는 영역에 사전에 만들어 놓은 것.
  • 사전 처리하지 않고 즉시 사용 가능하다.
  • 빌트인 값 타입 : Undefined, Null, Boolean, Number, String, Object
  • 빌트인 연산자(Opeartor) : +, -, *, /, %, ++, --, new 등

## 빌트인 오브젝트

  • 빌트인 오브젝트의 형태
빌트인 Number 오브젝트	(object)

=>
123과 같은 숫자, 상수, 지수를 처리하기 위한 오브젝트
(오직 Number를 위한 프로퍼티와 함수가 있다.)


빌트인 String 오브젝트 (object)

=>
오직 string을 위한 프로퍼티와 함수가 있다.

...
  • 대문자 Object는 키-값으로 데이터를 저장하는데 중점, 소문자 object는 데이터를 처리하는데 중점을 둔 것

 ## 빌트인 오브젝트의 유형

  • Number 오브젝트 : 123과 같이 숫자, 상수, 지수를 처리하기 위한 오브젝트
  • String 오브젝트 : "abc"와 같이 문자열을 처리하기 위한 오브젝트로, 문자열을 분리, 연결할 수 있다.
  • Boolean 오브젝트 : 단지 true, false를 처리하기 위한 오브젝트
  • Object 오브젝트 : {key: value} 형태로 프로퍼티를 처리하기 위한 오브젝트
  • Array 오브젝트 : [1, 2, "가나다"] 형태의 데이터를 처리하기 위한 오브젝트
  • Function 오브젝트 : function abc() {} 형태의 함수를 지원하기 위한 오브젝트
  • Math 오브젝트 : abs(), round() 등의 수학 계산용 함수를 지원하는 오브젝트
  • Date 오브젝트 : 연월일, 시분초, 밀리초 등의 시간 값을 구하고 설정할 수 있는 오브젝트
  • JSON 오브젝트 : 서버와 통신하는 데이터 형태를 지원하는 오브젝트
[{"key": "value"}] 형태
  •  RegExp 오브젝트 : ^, $와 같은 정규 표현식을 지원하는 오브젝트
  • 글로벌(Global) 오브젝트 : 소스 파일 전체에서 하나만 존재, 모든 코드에서 공유 및 접근이 가능하다. 

## 빌트인 Number 오브젝트

  • 숫자 처리를 위한 오브젝트
  • 숫자 처리를 위한 함수와 프로퍼티가 포함되어 있고, 함수를 호출하여 숫자 처리를 하게 되고, 프로퍼티 키로 값을 구하게 된다.

## 빌트인 오브젝트의 프로퍼티 리스트

  • 프로퍼티 리스트의 경우 전체적으로 보고 파악하는 것이 중요, 그 후 개별적으로 접근
new Number()	: 인스턴스 생성
Number 함수
Number()		: 숫자 값으로 변환하여 반환
Number prototype
constructor		: 생성자
toString()		: 숫자 값을 문자열로 변환
toLocaleString(): 숫자 값을 지역화 문자로 변환
valueOf()		: 프리미티브 값 반환
toExponential()	: 지수 표기로 변환
toFixed()		: 고정 소숫점 표기로 변환
toPrecision()	: 고정 소숫점 또는 지수 표기로 변환

## Number() // Number 함수

  • 파라미터 : 소괄호() 안에 작성하는 것으로, 변환할 값opt (선택 입력사항)
  • 반환 : 함수가 실행 된 후, 함수에서 반환한 값(변환 한 값)
  • 파라미터 값을 Number 타입으로 변환한다.
  • 파라미터 값이 String 타입이라도 값이 숫자이면 변환 가능하다.
1. 문자열을 숫자로 변환
log(Number("123") + 500);
log(Number("ABC"));		// 숫자로 변환 불가능 하므로 Not A Number 반환

=>
623
NaN		// 변환을 했는데 결괏값이 NaN인 경우, 변환 하려고 했는데 파라미터 값이 NaN인 경우.
log(Number(0x14));
log(Number(true));
log(Number(null));
log(Number(undefined));

=>
20	// 0x는 16진수*1+4 = 20
1
0
NaN	// 숫자로 변환할 수 없거나, 변환 했는데 그 결과가 Number 아닌 경우

## Number 상수

  • 상수는 값을 변경, 삭제할 수 없다.
  • 영문 대문자 사용이 관례이다.
  • Number.MAX_VALUE 형태로 값을 사용한다.
상수 이름
Number.MAX_VALUE 1.7976931348623157 * 10 (308승)
Number.MIN_VALUE 5 * 10(-324승)
Number.NaN Not-a-Number
Number.POSITIVE_INFINITY Infinity
Number.NEGATIVE_INFINITY -Infinity

 

반응형
반응형

# 자바스크립트 학습

# 함수 (function)

  • 특정 기능을 처리하는 자바스크립트 코드의 묶음
  • 함수의 형태
1. 함수의 형태 1
function book() {
	var title = "JS 책";
}

2. 함수의 형태2
var point = function(one, two) {
	var total - one + two;
    var bonus = total + 100;
}

## 함수의 구성 요소

  • function 키워드(KeyWord)
  • 함수 이름
  • 파라미터(Parameter) : 매개 변수, 인자, 아규먼트로도 불린다. 파라미터의 작성은 선택사항이다.
1. 함수의 이름을 사용한 형태1	// 함수 이름 book
function book() {
	var title = "JS 책";
};

2. 함수의 이름을 사용한 형태2	// 함수 이름 point
var point = function(one, two) {		// 소괄호() 안에 작성한 것을 파라미터라고 한다.
	var total = one + two;
    var bonus = total + 100;
};
  • 함수의 Body
중괄호{ } 안에 작성한 코드
함수 코드, 소스 텍스트로도 부른다.
함수의 코드 작성은 선택이다.

## 함수의 이름 규칙

  • 첫 문자의 경우...
영문자, $, 언더바(_) 사용가능
첫문자로 사용 불가능한 것 : 숫자, &, *, @, + 등..
function setBookTitle() {
	var title = "JS 책";
};

var calculatePoint = function(one, two) {
	var total = one + two;
    var bonus = total + 100;
};
  • 함수 이름 작명 권장사항은 아래와 같다.
함수 이름은 내부의 코드를 읽지 않더라도, 함수의 이름과 파라미터를 바탕으로 기능을 알 수 있도록 작명해야 한다. 
시맨틱(의미, 뜻)을 부여하여 작명한다.

## 함수의 이름 관례

  • calculatePoint() 처럼 동사로 시작한다. => calculatePoint는 포인트를 계산한다는 의미.
function setBookTitle() {
	var title = "JS 책";
};

var calculatePoint = function(one, two) {
	var total one + two;
    var bonus = total + 100;
};
  • 카멜 표기법(CamelCase 형태) : 두 개 이상의 단어를 사용할 때, 두 번째 단어부터 명사를 사용하며, 명사의 첫 문자를 대문자로 사용한다. (낙타 등과 비슷하다고 하여 카멜 표기법이라고 함)
  • 동사 + 명사의 형태로 인해 동적인 모습이 된다. (함수는 뭔가를 처리하는 기능을 수행하므로 정적인 모습이면 안된다.)

## 함수의 호출

  • 함수는 호출이 되어야 실행된다.
function setValue(one, two) {
	var total = one + two;
};

setValue(10, 20);	// setValue 라는 함수 호출, 파라미터 값 전달하여 값 받는 것이 목적
  • 함수 호출의 경우 setValue() 형태로 호출, 호출 시 호출 하려는 함수의 이름과 소괄호()의 형태로 작성한다. 만약 소괄호를 작성하지 않을 경우 호출되지 않는다.
  • 파라미터
호출된 함수에 넘겨줄 값을 작성한다.
파라미터의 경우 setValue(10, 20)처럼 소괄호() 안에 작성한다.
파라미터에는 자바스크립트에서 지원하는 타입을 작성해야 한다.
콤마(,)로 구분하여 다수의 값을 작성할 수 있다.
  • 함수의 사이클
1. 함수를 호출
setValue();

2. 함수를 호출하면서 파라미터 값 전달
setValue(10, 20);

3. 파라미터 값 설정 및 함수 코드 실행
function setValue(one, two) {
	var total = one + two;
};
  • 일반적으로 호출 받는 함수를 소스 파일 위에, 호출 하는 함수를 아래에 작성한다. (반드시 이렇게 해야 하는 건 아니다.)

## return

  • return문의 형태
return 표현식opt;
  • return문 실행 시 표현식의 평과 결과를 반환한다. (표현식 작성은 선택이다.)
function getPoint() {
	return 10 * 30;
};

var result = getPoint();
log(result);

=>
300
  • undefined 반환의 경우 예
function getPoint() {
};

var result = getPoint();

log(typeof result);

=>
undefined

return을 작성하지 않으면, 값을 반환하지 않는것이 아니라 undefined 값을 반환한다.
자바스크립트에서 undefined는 값이다.
  • 줄을 분리하여 표현식 작성한 예
function getPoint() {
	return
    10 * 30;
};

var result = getPoint();

log(result);

=>
undefined

return 다음에 세미콜론(;) 이 없고 줄 바꿈 된 경우
자바스크립트가 자동으로 세미콜론을 작성해 준다.
위 코드에서는 이로인해 return에서 문장이 종료되며 아래 10*30 문장은 실행되지 않는다.

# 주석 작성의 목적

  • 주석 작성의 궁극적 목적은 코드가 목적을 달성하기 위한 기능, 시나리오 등을 생각하고 정리하는 것이며, 이처럼 생각하고 정리한 것을 문법에 맞춰 작성하는 것이 코드이다.
  • 코드를 작성하기 전에 먼저 생각을 정리하고, 정리한 생각을 주석으로 작성한다. (주석을 작성하는 습관은 중요하다.)

## 주석 작성의 기준

  • 작성한 코드의 목적과 결과가 미치는 영향을 주석에 작성한다.
  • 다른 사람이 알 수 있도록 자세하게 주석을 작성해야 한다.

## 주석 작성의 사례

  • 문법적으로 정의된 것이 아닌, 개발자 간의 관례로 전해지다가 일반화 되었다.
/**
* @function calculateAmount
* 1. 파라미터로 받은 수량에 단가를 곱해
*    금액을 계산하고 결과 값을 반환한다.
* 2. 수량과 단가의 0 체크는
*    함수를 호출하기 전에 하므로 체크하지 않는다.
* @param {Number} quantity, 수량 
* @param {Number} price, 단가
* @param {Number} 계산 결과
*/
function calculateAmount(quantity, price) {
	// 주석을 자세하게 작성하기 위해
    // 함수의 코드를 분리하는 경우도 있다.
};
반응형
반응형

# 자바스크립트 학습

# switch

  • switch문의 형태
switch(표현식) {
	case 표현식: 무장 리스트opt
    default; 문장 리스트opt
}
  • switch문에서 표현식의 평가 값과 일치하는 case 문을 수행한다.
var exp = 1;

switch(exp) {
	case 1:
    	log(100);
    case 2:
    	log(200);
}

=>
100
200

break가 없으면 해당하는 case부터 전부 실행.
  • break의 사용 예
var exp = 1;

switch(exp) {
	case 1:
    	log(100);
        break;
    case 2:
    	log(200);
}

=>
100

break로 인해 해당 case 실행 후 종료.
  • default : 일치하는 case가 없으면 실행된다.
var exp = 7, value;

switch(exp) {
	case 1:
		value = 100;
    default:
    	value = 700;
    case 2:
    	value = 200;
}

log(value);

=>
200

해당하는 값이 없으므로 default 실행, break가 없으므로 다음 문장 실행
  • OR (||) 형태 예
var exp = 3;

switch(exp) {
	case 2:
    case 3:		// 2 or 3
    	log(100);
}

=>
100

# try ~ catch

  • try ~ catch문의 형태
1. try 블록 catch (식별자) 블록

2. try 블록 finally 블록

3. try 블록 catch (식별자) 블록 finally 블록
  • try 문에서 예외 발생을 인식, 예외가 발생하면 catch 블록 실행
var value;

try {
	value = ball;
} catch(error) {
	log("catch 실행");
}

=>
catch 실행

value 변수를 선언만 했고, value변수에 ball이라는 변수를 할당,
ball 변수가 선언되어 있지 않으므로 try 문에서 예외(에러) 발생하여 catch문 실행

try ~ catch 문에 위 사항들을 작성하지 않았다면 에러로 인행 프로그램이 중단된다.
하지만, try ~ catch문을 통해 프로그램 중단 없이 예외 발생 시 catch문이 실행된다.
  • 서버에서 데이터를 가져올 때(통신을 할 때)는 에러 발생등에 사전에 대비하여 프로그램이 중단되는 일이 생기지 않도록 반드시 try ~ catch문에 작성을 해야 한다.
  • finally 블록은 예외 발생과 관계없이 실행된다.
var sports;

try {
	sports = ball;
} catch(error) {
	log("catch 실행");
} finally {
	log("finally 실행");
};

=>
catch 실행
finally 실행

sports 변수에 ball 할당 시 ball 변수 선언된 적이 없어 에러 발생.
이로 인해 catch문 실행, finally 실행
만약 에러가 발생하지 않았을 경우엔 try문 실행, finally 실행

# throw

  • throw 형태
throw 표현식;
  • 명시적으로 예외를 발생시킬 때 사용한다.
  • 예외가 발생하면 catch문을 실행한다.
try {
	throw "예외 발생시킴";
    var sports = "스포츠";
} catch(error) {
	log(error);
    log(sports);
}

=>
예외 발생시킴
undefined

throw문으로 인해 의도적으로 에러 발생하여 throw 메세지 출력; 세미콜론 다음 문장은 실행되지 않는다.
try {
	throw {
    	msg: "예외 발생시킴".
        bigo: "임의의 이름 사용"
    };
} catch(error) {
	log(error.msg);
    log(error.bigo);
};

=>
예외 발생시킴
임의의 이름 사용
try {
	throw new Error("예외 발생시킴");
} catch(error) {
	log(error.message);
};

=>
예외 발생시킴

# strict 모드

  • strict 모드 형태
"use strict"
  • 엄격하게 자바스크립트(JS) 문법 사용의 선언
  • 작성한 위치부터 적용된다.
book = "책";
log(book);

=>
책

var을 작성하지 않은 형태
var을 사용하여 변수를 선언해야 하지만, 변수가 선언되고 "책"이 할당된다.
user strict 작성

"use strict";
try {
	book = "변수 선언하지 않음";
    log(book);
} catch(error) {
	log(error.message);
}

=>
변수 선언하지 않음

var 키워드를 작성하지 않은 형태
use strict로 코딩 실수를 예방할 수 있다.
  • ES 5부터 지원한다.
반응형
반응형

# 자바스크립트 학습

# 문장 (Statement)

  • ; (세미콜론)
  • 세미콜론은 문장을 끝나게 하는 역할을 한다.
var book = "책";

# 화이트 스페이스

  • White Space
  • 사람 눈에 보이지 않는 문자
  • 가독성을 위한 것이다.
  • 문자마다 기능을 갖고 있다.
  • 종류는 아래와 같다.
1. 수평 탭 : TAB
2. 수직 탭 : VT
3. 폼 넘기기 : FF
4. NBSP (No-break space) : NBSP
5. BOM (Myte Order Mark) : BOM
6. Line Feed : LF
7. Carriage Return : CR
8. Line Separator : LS
9. Paragraph Separator : PS

# 세미콜론 자동 삽입

  • 세미콜론은 문장 끝에 작성한다.
  • 문장 끝에 세미콜론을 작성하지 않으면, 자바스크립트는 세미콜론을 자동으로 삽입하여 문장을 끝나게 한다.
var one = 1
var two = 2;
log(one);

=>
1

자바스크립트 엔진이 분석하여 세미콜론을 자동으로 삽입하여 문장을 끝나게 한다.
(줄을 분리해야 화이트 스페이스(LF/CR) 앞에 세미콜론을 자동 삽입한다.)
(한 줄에 작성할 경우 삽입하지 않는다.)

# 블록

  • {문장 리스트opt} 중괄호의 형태
  • 실행 그룹으로, 블록 안의 모든 문장을 실행한다.
var one = 1, two = 1;
if (one === two) {
	var result = one + two;
    log(result);
};

=>
2
  • 문장 리스트 : { } 안에 작성된 모든 문장을 의미, 문장 리스트 작성은 선택(option)이다.

# if

  • if (표현식) 문장1 
  • if (표현식) 문장1 else 문장2
  • 조건에 따른 처리로서 먼저 표현식을 평가한다. 평가 결과를 true/false로 변환, true이면 문장1 실행, false이면 문장2를 실행한다.
1. 블록을 사용하지 않은 형태.
var a = 1, b = 1;
if (a === b) log("블록을 사용하지 않음");

if (a === b)
	log("1번 줄")
    log("2번 줄");
    
=>
블록을 사용하지 않음
1번 줄
2번 줄



2. 블록을 사용한 형태
var a = 1, b = 1;
if (a === b) {
	log("블록 사용");
}

=>
블록 사용



3. if else, 블록 사용하지 않음
var a = 1, b = 2;
if (a === b) 
	log("블록 사용하지 않음. true");
else
	log("블록 사용하지 않음. else");
    
=>
블록 사용하지 않음, else



4. if else, 블록 사용
var a = 1, b = 2;
if (a === b) {
	log("블록 사용. true");
} else {
	log("블록 사용. else");
}

=>
블록 사용. else

# debugger

  • 디버거 작성 위치에서 실행을 멈춘다.
  • 브라우저의 개발자 도구 창이 열려 있을 때만 멈춘다.
  • ES5부터 지원한다.
var sports = "스포츠";
debugger;
log(sports);

=>
스포츠
debugger가 있는 위치에서 실행이 멈춘다.(debugger에서 조치를 취해야 다음이 실행된다.)
  • debugger 사용방법
1. 개발자 도구 열기(Ctrl + Shift + I) => 윈도우 기준
	- 크롬 맞춤설정 및 제어
    - 도구 더보기
    - 개발자 도구(D)
2. 브라우저 새로고침 실행(F5)
3. debugger 위치에서 실행 멈춤
4. debugger 종료(F8)


* 윈도우 기준 debugger 단축키
F8 : debugger 종료
F11 : debugger 다음 라인으로 이동
브레이크포인트 : 희망하는 라인 번호 좌측 클릭

# while

  • while (표현식) 문장
  • 표현식의 평가 결과가 false가 될 때까지 문장을 반복하여 실행
  • 반복이 종료되는 조건이 필요하다. (없을경우 무한 반복된다.)
var k = 1;
while (k < 3) {
	log(k);
    k++; 
}

=>
1
2

# do ~ while

  • do 문장 while (표현식)
  • 처리 방법은 while문과 동일하지만, 단, do 문을 먼저 실행한다.
var k = 0;
do {
	log("do:", k);
    k++;
} while (k < 3) {
	log("while:", k);
};

=>
do:0
do:1
do:2
while:3

do~while문의 경우 true일 때 do 문장 실행, false이면 while문 실행

# for( )

  • for (초깃값opt; 비교opt; 증감opt) 문장
  • 2번째의 비교 표현식의 평가 결과가 true인 동안 문장을 반복 실행한다.
for (var k = 0; k < 2; k++) {
	log(k);
};

=>
0
1

## for( )문 옵션

  • for (초깃값opt; 비교opt; 증감opt) 문장에서 opt는 생략 가능하다.
  • 증감 생략
for (var l = 0; k < 3;) {
	log(k);
    k++;
};

=>
0
1
2
  • 초깃값과 증감 생략
var k = 0;
for (; k < 3;) {
	log(k);
    k++;
};

=>
0
1
2
  • 비교와 증감 생략
for ( var k = 0; ;) {
	log(k);
    k++;
    if (k > 2) {
    	break;	//for()문 종료
    };
};
  • 모두 생략
var k = 0;
for (;;) {
	log(k);
    if (k === 2) {
    	break;	// for()문 종료
    };
    k++;
};

=>
0
1
2

# break

  • break;
  • break 식별자;
  • 반복문 종료
  • for, for~in, while, do~while, switch에서 사용한다.
1. break 위치에서 종료
var k = 0, m = 0;
while (k < 3) {
	m++;
    if (m === 2) {
    	break;
    };
    log(m);
};

=>
1
2. 세미콜론 자동 첨부
for (var k = 0; k < 3; k++) {
	if (k === 1) {
    	break
        log("k === 1");
    };
    log(k);
};

=>
0

break 끝에 세미콜론을 자동으로 첨부.
break 아래 log는 실행하지 않는다.

# continue

  • continue;
  • continue 식별자;
  • 반복문의 처음으로 분기한다.
for (var k = 0; k < 5; k++) {
	if (k === 2 || k === 3) {
    	continue;
    };
    log(k);
};

=>
0
1
4

k === 2 or k === 3일때 continue로 반복문으로 돌아감(k++로)
  • for, for~in, while, do~while에서 사용한다.
반응형

+ Recent posts