JS Datatype, Function, Object
데이터 타입.
- Number
숫자를 표현하거나 산술연산을 하는데 사용되는 타입. 64비트
parseInt(), parseFloast() - Number 파싱
NaN(Not a Number) - Number 파싱 시 숫자가 아닐때
isNaN() - 숫자가 아닐 때 true, 숫자일때 false
Infinity - 무한대
isFinite() - 유한 숫자 이면 true, 아니면 false
<br>
- String
문자열 (16비트 문자들의 연결)
length - 문자열 길이
charAt() - EX. "hello world".chatAt(0) >> h
replace() - EX. "hello world".replace("hello", "bye"); >> bye world
toUpperCase() - EX. "hello world".toUpperCase() - HELLO WORLD
split() - EX. "1+2+3+4+5".split("+") >>> ['1','2','3','4','5']
<br>
<br>
- Null, undefined
Null과 Undefined 차이
Null은 개발자가 의도적으로 비어있는 값을 주입 한 것.
Undefined 애초에 값이 정해지지 않은 것.
<br>
- Object
- Array
- Function
- Date
- RegExp
- Boolean
<br>
<br>
함수선언 vs 함수표현
- 함수 선언 ( Function Declarations)
//Function Declarations
function foo() {
console.log('hello');
}
단순히 함수를 선언한 것으로, 실행가능 코드가 아니라는것, Just Code.
<br>
- 함수 표현 ( Function Expression)
//anonymous function expression
var foo = function() {
console.log('hello');
};
//named function expression
var foo = function foo() {
console.log('hello');
};
// 자기호출함수, self invoking function expression
(function foo() {
console.log('hello');
})();
함수표현은 특정변수에 할당되거나, 즉시 실행가능한 코드 블럭, 존재하는 함수
자기호출함수 - 해석과 동시에 실행되는 코드 블록
<br>
Hoisting?
Hoisting은 '끌어올리기'를 말합니다.
**var의 경우, **정의된 var 변수의 선언문을 유효 범위의 최상단으로 끌어올리는 것을 말합니다.
**함수의 경우, **함수선언을 먼저 수집하여 최상위 SCOPE로 끌어올리는 것을 말합니다.
즉 함수 선언은 자바스크립트 엔진 구동 시 가장 최우선되어 해석됩니다.
중요한 부분은 함수선언은 Hoisting 되고, 함수표현은 Hoisting 되지 않습니다.
<br>
<br>
<br>
Object
자바스크립트 자체가 객체기반으로 돌아가는 스크립트 언어
<br>
프로퍼티
- 객체가 가지는 값
- 프로퍼티는 값이 존재하지 않으면, 존재할 필요가 없음.
- 그렇기 때문에 프로퍼티를 추가하면서 값을 할당하지 않으면 Syntax Error 발생
- 또한 삭제시 undefined, null 아닌 delete 키워드를 사용해야함.
<br>
메소드
-
객체가 가지고 있는 동작, 객체를 움직이는 동작.
-
객체를 통해서 메소드를 수행해야한다.
-
즉 동작을 수행하는 주체이며, 객체에게 그 동작을 수행하라고 지시함으로서 사용.
-
메소드를 정의하는 것은, 객체로부터 파생된 또 하나의 객체를 정의하는 것.
-
자바스크립트의 객체(Object) 구성
Built-in Object (자바스크립트 내장 객체) : 자바스크립트 엔진이 구동되는 시점에서 바로 제공, Global, Object, String, Number, Boolean, Data, Array, Math... 등
Native Object (브라우져 내장 객체) : 자바스크립트 엔진을 구동하는 것들에서 빌드 되는 객체, window, document... 등
Host Object (사용자 정의 객체) : 뜻 그대로 사용자가 생성한 객체.
<br>
<br>
- Object 생성 방법
// Constructor Type, 여러개 생성 가능.
var foo = new Object();
foo.name='foo';
console.log(foo.name);
> foo
/* JSON 방식을 사용하여 객체 리터럴 - 단일객체 */
var foo = {
name : 'foo'
};
console.log(foo.name);
> foo
<br>
<br>
Object 객체
자바스크립트의 객체는 곧 배열이다.
Object 객체는 Built in Object(자바스크립트 내부 객체) 로 모든 객체의 최상위 객체.
Object 객체는 암묵적으로 Array 객체를 상속함. 모든 객체는 Object 객체에서 파생되어 나오는 확장형태.
따라서 모든 객체는 곧 배열이다.
<br>
메소드를 소유한 parent 객체는 객체에 포함된 메소드들의 참조값만을 가지고 있다. 즉 메소드들 자체도 각각 개별 객체로서 존재한다. 이 내용은 prototype을 다루면서 더 자세히 설명하겠다. 또한가지 방법은 Object Notation 이다. JSON의 key, value 방식의 객체 리터럴 구조는 프로그래밍 언어를 공부한 사람은 누구나 아는 배열 구조와 동일하다. 특히 php 와 같은 스크립트 언어의 배열을 봐왔던 사람들은 더더욱 그럴것이다. 즉 JSON의 표현방식은 [] 라는 Array 표현의 다른 방식일 뿐이다. 실제로 객체의 프로퍼티 생성이나 참조에서 . 연산자가 아닌 []를 사용 할수도 있다.**
<br>
<br>
참고
<a href="http://insanehong.kr/category/javascript/">http://insanehong.kr/category/javascript/</a>
<br>
<br>
<br>
<br>