Javascript expression
Javascript 2011. 11. 24. 14:46
Expression(표현식)이란?
정의: 자바스크립트가 파싱하여 값으로 출력할 수 있는 모든 구문들을 의미 합니다.
1. 세부지정이나 호출
-
. [] ()
2. 산술 연산자
-
1 + 11 - 11 * 11 / 1
3. 논리연산자
-
1 + 11 - 11 * 11 / 1
많은 언어에서 논리 연산자는 좌우 항으로 불리언을 기대하며 결과값으로 불리언을 가집니다.
하지만 자바스크립트의 &&(AND)연산자는 첫번째 피연산자가 거짓(false)일 경우,
첫번째 피연자의 값을 가지고 그렇지 않은경우는 두번째 피연산자의 결과값을 갖는다.
-
alert(1 !== 1 && 0); // false(좌측 피연산자 1 !== 1(false))
-
alert(1 === 1 && 0); // 0(좌측 피연산자 1 === 1(true))
-
alert(0 && 1); // 0(좌측 피연산자 0(false))
-
alert(1 && 0); // 0(좌측 피연산자 1(true))
-
-
var div = document.createElement('div');
-
alert(div && div); // object(좌측 피연자 div(true));
-
alert(!div && 0); // false(좌측 피연산자 !div(false));
4. 동등연산자
-
['==']:
두 데이터값에 타입이 다르더라도 값이 일치하면 true를 반환한다.-
['==']:
-
null == undefined //true
-
3 == '3' //true
-
1 == true //true
-
0 == false //true
-
null == undefined //true
-
{a: 1} == {a: 1} //false(서로다른객체)
-
var obj1 = obj2 = {a: 1}
-
obj1 == obj2 //true(같은객체를 참조함
-
(function 내부라면 obj1은 지역변수 obj2 전역변수로 선언))
두 데이터값에 타입이 같고 값이 일치하면 true를 반환한다.
-
null == undefined //false
-
3 == '3' //false
-
1 == true //false
-
0 == false //false
-
null == undefined //false
-
{a: 1} === {a: 1} //false(서로다른객체)
-
var obj1 = obj2 = {a: 1}
-
obj1 === obj2 //true
-
(같은객체를 참조함(function 내부라면 obj1은 지역변수 obj2 전역변수로 선언))
5. 관계 연산자
-
>, <,
>=, <=
6. Instanceof 연산자
해당 객체의 생성자 일치하면 true를 반환한다.
-
{} instanceof Object //true
-
{} instanceof Array //false
- >, <, >=, <=
-
{} instanceof Object //true
-
{} instanceof Array //false
7. 단항 연산자
-
delete 연산자:
delete window['value'];
-
new 연산자: new function(){;}
-
typeof 연산자:
typeof 1
-
+ : +=
-
-:-=
-
!:!=
-
delete 연산자: delete window['value'];
-
new 연산자: new function(){;}
-
typeof 연산자: typeof 1
-
+ : +=
-
-:-=
-
!:!=
8. 삼항 연산자
-
?: --> var isLogin = isLogin === true ? true : false
-
?: --> var isLogin = isLogin === true ? true : false
Javascript Literal이란?
Javascript 2011. 11. 24. 11:44
Literal(데이터값)이란?
정의: 모든 데이터 타입에 들어가는 데이터값 그 자체.
1. Integer Literal란?
자바스크립트에서 정수는 -9007199254740992(-253)에서 9007199254740992(253) 사이에 있는(이 두 수를 포함하여) 모든 정수를 표현할 수 있다.
단, 비트 단위연산자(bitwise operator)는 -2147483648(-231)에서 2147483647(231-1)에 이르는 32비트 정수에 대해서만 작동한다.
// 앞서 말했듯이 해당 데이타 타입이 가지는 "유한 수" 보다 크거나(+) 작은 값(-)을 할당 시 JS는 그 유한 수 이상/이하를 출력하지 못한다.
console.log(parseInt(-9007199254740992 + -1, 10));
console.log(parseInt(9007199254740992 + 1, 10));
2. Floating point Literal란?
자바스크립트에서에서 실수는 정수 부분과 소수점, 소수점 이하 부분으로 표현된다.
3.14
2345.789
.33333333333333
6.02e23 // 6.02 ×× 1023
1.4738223E-32 // 1.4738223 ×× 10-32
자바스크립트에서 문자열은 0개('') 또는 하나 이상의 Unicode 문자들이 작은따옴표('')
혹은, 큰따옴표("")로 둘러싸인 시퀀스다
"" // 빈 문자열: 문자가 없다.
'testing'
"3.14"
'name="myform"'
"wouldn't you prefer O'Reilly's book?"
"This string\nhas two lines" // 두 줄짜리 문자열
" π is the ratio of a circle's circumference to its diameter"
.
4. Function Literal이란?
자바스크립트는 함수를 정의하는 "함수 리터럴" 문법도 제공한다.
var literal = function(x) { return x; }
이름 없는 함수(익명함수)를 프로그램 내에 리터럴 형태로 포함시킬 수 있게 한 최초의 언어인 "Lisp" 프로그램 언어를 기리는 의미에서, 이러한 방식으로 정의된 함수를 람다함수(lambda function)라고 부른다.
함수 리터널을 구현하는 또다른 방식.
var literal = new Function("x", "return x;");
5. Object Literal이란?
자바스크립트는 객체를 생성하고 프로퍼티를 지정하는 객체 리터럴 문법을 제공한다.
1. 블록안에 객체 Property를 콜론(:)으로 구별한 (key: value)형태의 값을 정의하고 각각의 Property를 쉼표(,)로 분리한다.
var obj =
{
x: 2.3
, y: -1.2
};
활용도 가능하다.
var obj =
[
{x: {x: 2.3, y:-1.2}, y: {x: 2.3, y:-1.2}}
, {x: {x: 2.3, y:-1.2}, y: {x: 2.3, y:-1.2}}
, {x: {x: 2.3, y:-1.2}, y: {x: 2.3, y:-1.2}}
];
3. 또한 아래와 같은 2가지 형태의 리터널 정의도 가능하다.
var obj = new Object()
obj.name = 'test';
var fnObj = new function(){ this.name = 'test'; return this };
6. Regexp literal(정규 표현식 리터널)이란?
var regex = /[a-z]/g;
7. Array Literal이란?
기본 형태:
기본 형태:
var array = new Array(1, 2, 3);
확장 형태:
var array = [1, 2, 3];
동기와 비동기 차이점
Javascript 2011. 11. 21. 18:50
동기:
SYSTEM: 명령이 끝날때 까지 사용자에게 제어권을 돌려 주지 않는다.
WEB(기본 HTTP 요청): 서버 응답이 끝날때 까지 사용자에게 제어권을 돌려 주지 않는다.
비동기:
WEB(XMLHttpRequest 요청): 서버 응답이 끝나기전 사용자에게 제어권을 돌려 준다.
위의 설명과 같이 동기식 과 비동식을 구분하는것은 간단하다.
어떤 루틴이 끝날때까지 제어권이 돌아오지 않으면 동기식 그렇지 않으면 비동기식인 것이다.