SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
Startup JavaScript
2.연산자
THINKER TO MAKER
x
연산자
THINKER TO MAKER
컴퓨터를 전자 계산기로
연산자
연산자는 미리 정의된 처리를 행하는 기호 임. 처리되는 것은 피 연산자라 함.
산술 연산자는 표준적인 사칙연산과 수치에 관한 연산을 수행
연산자 개요 사용 예 결과
+ 숫자의 덧셈 9+2 11
- 숫자의 뺄셈 9-2 7
* 숫자의 곱셈 9*2 18
/ 숫자의 나눗셈 9/2 4
% 숫자의 나머지 연산 9%2 1
++ 전치/후치 덧셈 x=3 일 때, x++ or ++x 3, 4
-- 전치/후치 뺄셈 x=3 일 때, x-- or --x 3, 2
X = =A + BOperator (연산자) Operand(피 연산자)
연산자 실습
데이터 형에 따라 연산 결과가 달라지며, 소수점 연산은 오차 발생 가능성
증가/감소 연산자의 경우 위치에 따라 의도하는 결과가 달라짐
// Operator
console.log(100 + 1); // 101
console.log(100 - 1); // 99
console.log(100 * 5); // 500
console.log(100 / 5); // 20
console.log(100 % 3); // 1
console.log('100' + 1); // 1001
var today = new Date();
console.log(today);
console.log(100 + today);
// Post-Increment
var a = 5;
var b = a++;
console.log(a); // 5
console.log(b); // 6
// Pre-Increment
var c = 5;
var d = ++c;
console.log(c); // 6
console.log(d); // 6
// Float Number
console.log(0.2 * 3);
// 0.6000000000000001
console.log(0.2 * 3 === 0.6);
// false
console.log((0.2 * 10) * 3 / 10);
// 0.6
console.log((0.2 * 10) * 3 ===
0.6 * 10);
//true
대입 연산자 (1/1)
지정된 변수에 특정 값을 대입하는 연산자로, = 이 대표 적임.
산술 연산자나 비트 연산자와 결합된 복합 대입 연산자도 포함
연산자 개요 사용 예 결과
= 변수 등에 값을 대입 함 x = 1
+= 좌변 값에 우변 값을 더한 값을 대입 함 x = 3; x += 2 5
-= 좌변 값에 우변 값을 뺀 값을 대입 함 x = 3; x -= 2 1
*= 좌변 값에 우변 값을 곱한 값을 대입 함 x = 3; x *= 2 6
/= 좌변 값에 우변 갑을 나눈 값을 대입 함 x = 3; x %= 2 1.5
%= 좌변 값에 우변 값을 나눈 나머지 값을 대입 함 x = 3; x /= 2 1
&= 좌변 값에 우변 값을 비트 AND 연산한 값을 대입 함 x = 10; x &= 5 0
|= 좌변 값에 우변 값을 비트 OR 연산한 값을 대입 함 x = 10; x &= 5 15
^= 좌변 값에 우변 값을 비트 XOR 연산한 값을 대입 함 x = 10; x ^= 5 15
<<= 좌변 값에 우변 값만큼 좌측 SHIFT 한 결과를 대입 함 x = 10; x <<= 2 20
>>= 좌변 값에 우변 값만큼 우측 SHIFT 한 결과를 대입 함 x = 10; x >>= 1 5
>>>= 좌변 값에 우변 값 만큼 우측 SHIFT 한 결과를 대입 (Unsigned) x = 10; x >>>= 2 2
대입 연산자 (1/2)
기본 대입 연산은 값 자체가 전달되나, 참조 형은 주소 값이 전달 됨
참조 형은 따라서 원본의 실제 값이 변경 시 참조된 값에도 영향을 줌
기본형 대입 연산자
기본형은 값이 직접 보관됨, a
의 값을 b로 전달할 경우 그
값이 복사되어, 영향이 없음
참조형 대입 연산자
참조형의 경우 값 자체가 보관되는 것이 아닌, 값을 보관하
는 주소가 변수에 보관되므로, array1 변경 내용이 array2 에
도 영향을 미침
주소 값
100
200 [0, 1, 2] -> [5, 1, 2]
300
1
기본형 참조형
1
1
변수x
변수yy=x
1
1
변수 array1
변수 array2
array2 = array1
참조 주소 복사
값에 영향을 미치지 않음 서로 동일한 주소를 보고 있으므로, 결과가 영향을 줌
대입 연산자 실습
일반 값을 대입하는 경우 기본형(Value), 배열과 같은 객체를 전달하는 경우
참조형 (Reference) 으로 처리가 됨
// = and +
var a = 0;
var b = 0;
a = a + 1;
b += 1;
console.log(a); // 1
console.log(b); // 1
// value
var x = 1;
var y = x;
x = 2;
console.log(x); // 2
console.log(y); // 1
// reference
var arr1 = [0, 1, 2];
var arr2 = arr1;
arr1[0] = 10;
console.log(arr1); // 10, 1, 2
console.log(arr2); // 10, 1, 2
비교 연산자 (1/2)
좌/우변의 값을 비교하여 결과를 반환.
이항 연산은 값만, 삼항은 데이터 형도 비교하므로, 오 동작 방지가 가능
연산자 개요 사용 예 결과
== 좌변과 우변의 값이 같을 경우 true 3 == 3 true
!= != 좌변과 우변의 값이 같지 않을 경우, true 3 != 3 false
< 좌변이 우변보다 작은 경우, true 3 < 7 true
<= 좌변이 우변보다 작거나 같을 경우, true 3 <= 3 true
> 좌변이 우변보다 클 경우, true 3 > 7 false
>= 좌변이 우벼보다 크거나 같을 경우, true 3 >= 3 true
=== 좌변과 우변의 값이 같고 데이터 형도 같은 경우, true 3 === 3 true
!== 좌변과 우변 값이 같지 않거나 데이터 형이 다른 경우, true 3 !== 3 false
?: 조건 식? 식1:식2, true 인 경우 식1을 false 인 경우 식2를 수행 <x==1) ? 1:0 1 또는 0
비교 연산자 (2/2)
등가 연산자는 데이터 형이 다르더라도 최대한 값이 같게 시도하여 반환.
참조형의 경우는 값을 비교하는 것이 아닌 주소를 비교 함.
비교 데이터 형 평가 기준
동일
문자열/숫자/논리형 단순히 쌍방의 값이 동일한지를 판단
배열/객체 참조 장소가 동일한 지를 판단
null/undefined 쌍방이 모두 null/undefined 또는 null과 undefined 의 비교는 모두 true
틀림
문자열/숫자/논리형 문자열/논리형을 수치로 변환 후에 판단
객체 기본형으로 변환 후에 판단
주소 값
100
200 [1, 2, 6, 8, 10]
300
400
500 [1, 2, 6, 8, 10]
600
10
기본형 참조형
10
변수x
숫자형:num2
==
배열형:arr1
배열형:arr2
서로가 별개로
영향을 미치지
않음
10
10
숫자형:num1
!=
비교 연산자 실습
이항 연산자는 어떻게든 값이 같다고 판단하므로, 개발자가 데이터 형을 의식
하지 않아도 되나, 이로 인해 의도하지 않는 결과를 가져올 수 있음
// value ==, ===
console.log(1 == true); // true
console.log(1 == '1'); // true
console.log('0x10' == 16); // true
console.log(1 === true); // false
console.log(1 === '1'); // false
console.log('0x10' === 16); // false
// reference
var arr1 = ['Banana', 'Apple', 'Orange'];
var arr2 = ['Banana', 'Apple', 'Orange'];
console.log(arr1 == arr2); // false
// ?: operator
var x = 90;
console.log((x > 80) ? 'Success' : 'fail'); //Success
논리 연산자 (1/2)
논리 연산자는 복수의 식을 결합하여, 그 결과를 true/false 로 반환
비교 연산자와 조합하여 사용하며, 복잡한 조건식을 표현할 수도 있음
연산자 개요 사용 예 결과
&& 좌우식이 모두 true 인 경우 true 100 == 100 && 1000 == 1000 true
|| 좌우시의 어느 쪽이든 true 인 경우 true 100 == 100 || 1000 = 500 true
! 식이 false 인 경우, true !(10 > 100) true
좌측 식 우측 식 && ||
true true true true
true false false true
false True false true
false false false false
&& || !
논리 연산자 (2/2)
논리 연산자의 평가 결과는 좌/우측 식의 논리 값에 따라 달라짐
논리 AND/OR 연산자만 사용하는 경우, 우측 식은 판정되지 않을 수 있음
Logical &&
Logical ||
false 라면
x == 1 && alert(‘Hello 2’)
x == 1 || alert(‘Hello 3’)
true/false에 관계없이
true 라면 true/false에 관계없이
조건식 전체가 반드시 false
조건식 전체가 반드시 true
평가가 불 필요
평가가 불 필요
우측 식은 숏컷 (무시)
우측 식은 숏컷 (무시)
논리 연산자 실습
복수의 조건식과 논리 값을 논리적으로 결합하여 결과를 true/false 로 반환
비교 연산자와 조합하여 복잡한 조건식을 만들어 냄
// == Logical Compare
var x = 1;
var y = 2;
var z = null;
console.log(x == 1 && y == 1); // false
console.log(x == 1 || y == 1); // true
// Short Curcuit
x == 1 && alert('Hello 1'); // popup
x == 2 && alert('Hello 2'); // pass
y == 2 || alert('Hello 3'); // pass
기타 연산자
비트 연산은 정수 값을 2로 나타냈을 때, 각 bit 단위로 논리 계산을 수행
콤마와 delete, new, typeof instanceof 등 이용 가능한 연산자가 있음
연산자 개요 사용 예
& 좌우 값 모두에 세트된 비트 (AND 연산) 10&5 -> 1010&0101 -> 0000 -> 0
| 좌우 값 중 어느 쪽이든 세트된 비트 (OR 연산) 10|5 -> 1010|0101 -> 1111 -> 15
^
좌우 값중 어느쪽이든 세트 되었거나 양쪽 모두 세
트되지 않은 비트 (XOR 연산)
10^5 -> 1010^0101 -> 1111 -> 15
~ 비트를 반전 (NOT 연산) ~10 -> ~1010 -> 0101 -> -11
<< 비트를 좌측으루 SHIFT 10<<1 -> 1010<<1 -> 10100 -> 20
>> 비트를 우측으로 SHIFT 10>>1 -> 1010>>1 -> 0101 -> 5
>>> 비트를 우측으로 SHIFT 하되, 좌측을 0 으로 채움 10>>>2 -> 1010>>>2 -> 0010 -> 2
연산자 개요 연산자 개요
, (콤마) 좌우의 식을 계속하여 실행 new 새로운 인스턴스를 생성
delete 객체의 프로퍼티나 배열의 요소를 삭제 typeof 오퍼랜드의 데이터형을 취득
instanceof 객체가 지정된 클래스의 인스턴스인지를 판정 void 미정의 값을 되돌림
기타 연산자 실습
Delete 는 지정된 변수, 배열, 객체를 메모리에서 삭제함.
배열 삭제 시 해당 요소만 삭제, 프로퍼티의 경우 참조 객체는 삭제되지 않음
// delete
var arr =
['Banana','Tomato','Orange'];
delete arr[0];
console.log(arr); // [,
'Tomato','Orange']
var obj = { x : 10, y : 20 };
delete obj.x;
console.log(obj); // { y : 20}
var num = 10; // Can't delete
delete num;
console.log(num); // 10
// typeof
var num = 1;
var str = 'Hello';
var bool = true
console.log(typeof num);// number
console.log(typeof str);// string
console.log(typeof bool);
// boolean
// instanceof
console.log(typeof obj);
console.log(obj instanceof
Object);
console.log(obj instanceof Array);
console.log(typeof arr);
console.log(arr instanceof
Object);
console.log(arr instanceof Array);
결합 순서 / 우선 순위 (1/2)
연산자를 좌->우, 우->좌 등, 어떤 방향으로 결합할지 정하는 규칙
연산자 우선순위가 동일할 경우, 결합 순서를 가지고 어느 쪽 부터 인지 결정
좌우 데이터 형 데이터 형 기준
좌 -> 우
산술 연산자 단순히 쌍방의 값이 동일한지 비교
비교 연산자 참조 장소가 동일한지 판단
논리 연산자 쌍방 모두 null/undefined 또는 null과 undefined의 비교는 모두 true
비트 연산자 <<. >>, >>>, &, ^, |
그 외 ., [], (), ,, instanceof, in
우 -> 좌
산술 연산자 ++, --
대입 연산자 =, +=, -=, *=, /=, %=, &=, ^=, |=
논리 연산자 !
비트 연산자 ~
조건 연산자 ?:
그 외 -(부호반전), +(무연산), delete, typeof, void
결합 순서 / 우선 순위 (2/2)
수학에서 *, / 는 +, - 보다 우선 처리 됨
복수 연산자가 포함된 경우 우선 순위가 높은 순으로 연산 수행
[ ]1 ( )
++2 -- - ~ !
*3 / %
+4 -
<<5 >>
<6 <= >= >
==7 != ===
>>>
!==
&8
^9
|10
&&11
||12
?:13
14 = += -=
15 ,
결합 순서 / 우선 순위 실습
각각의 연산자는 우선 순위를 가지고 있음
우선 순위 판별 시 순위가 동일하면, 결합 순서로 연산 순서를 판별
var a = 3 * 5 + 2 * 2;
var b = (3 * 5) + (2 * 2);
console.log(a); // 19
console.log(b); // 19
var c = 2 * 5 - 3;
var d = 2 * (5 - 3);
console.log(c); // 7
console.log(d); // 4
var x = c *= 3;
var y = ( c *= 3);
console.log(x); // 21
console.log(y); // 63
W www.circul.us G group.circul.us
S social.circul.us C cafe.circul.us
CONTACT.US circulus@circul.us
THINKER TO MAKER
ANY
QUESTION?
x

Weitere ähnliche Inhalte

Was ist angesagt?

Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
ETRIBE_STG
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
유진 변
 

Was ist angesagt? (19)

7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++
 
7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍7가지 동시성 모델 - 3장. 함수형 프로그래밍
7가지 동시성 모델 - 3장. 함수형 프로그래밍
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 
Es2015 Simple Overview
Es2015 Simple OverviewEs2015 Simple Overview
Es2015 Simple Overview
 
Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리Javascript 완벽 가이드 정리
Javascript 완벽 가이드 정리
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)
 
스위프트 성능 이해하기
스위프트 성능 이해하기스위프트 성능 이해하기
스위프트 성능 이해하기
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 
C++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsC++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threads
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JS
 
골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
 
6 function
6 function6 function
6 function
 
Javascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operatorJavascript introduction, dynamic data type, operator
Javascript introduction, dynamic data type, operator
 
파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409
 

Andere mochten auch

Andere mochten auch (15)

1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
Personal Interconnect AUdio - piAu manual
Personal Interconnect AUdio - piAu manualPersonal Interconnect AUdio - piAu manual
Personal Interconnect AUdio - piAu manual
 
Startup JavaScript 10 - OpenAPI & RSS 활용
Startup JavaScript 10 - OpenAPI & RSS 활용Startup JavaScript 10 - OpenAPI & RSS 활용
Startup JavaScript 10 - OpenAPI & RSS 활용
 
Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신
 
[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄[WEB UI BASIC] JavaScript 1탄
[WEB UI BASIC] JavaScript 1탄
 
Startup 123D Design - 9. 강아지 모델링
Startup 123D Design - 9. 강아지 모델링Startup 123D Design - 9. 강아지 모델링
Startup 123D Design - 9. 강아지 모델링
 
123D Design - 컵 만들기
123D Design - 컵 만들기123D Design - 컵 만들기
123D Design - 컵 만들기
 
123D Design - 전구 디자인 하기
123D Design - 전구 디자인 하기123D Design - 전구 디자인 하기
123D Design - 전구 디자인 하기
 
123D Design - 정리함 만들기
123D Design - 정리함 만들기123D Design - 정리함 만들기
123D Design - 정리함 만들기
 
Startup 123D Design - 8.벤치 만들기
Startup 123D Design - 8.벤치 만들기Startup 123D Design - 8.벤치 만들기
Startup 123D Design - 8.벤치 만들기
 
123D Design - 화분 만들기
123D Design - 화분 만들기123D Design - 화분 만들기
123D Design - 화분 만들기
 
Startup 123D Design - 7.물뿌리개 만들기
Startup 123D Design - 7.물뿌리개 만들기Startup 123D Design - 7.물뿌리개 만들기
Startup 123D Design - 7.물뿌리개 만들기
 
123D Design - 모델링 기초
123D Design - 모델링 기초123D Design - 모델링 기초
123D Design - 모델링 기초
 
Startup 123D Design - 10. 3D프린팅
Startup 123D Design - 10. 3D프린팅Startup 123D Design - 10. 3D프린팅
Startup 123D Design - 10. 3D프린팅
 

Ähnlich wie 2.Startup JavaScript - 연산자

02장 자료형과 연산자
02장 자료형과 연산자02장 자료형과 연산자
02장 자료형과 연산자
웅식 전
 
C수업자료
C수업자료C수업자료
C수업자료
koominsu
 
Ruby - 6th (루비 6장 변수와 식)
Ruby - 6th (루비 6장 변수와 식)Ruby - 6th (루비 6장 변수와 식)
Ruby - 6th (루비 6장 변수와 식)
재영 이
 
부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리
suitzero
 
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
홍준 김
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
kd19h
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
jinwookhong
 
13장 연산자 오버로딩
13장 연산자 오버로딩13장 연산자 오버로딩
13장 연산자 오버로딩
유석 남
 

Ähnlich wie 2.Startup JavaScript - 연산자 (20)

Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
 
02장 자료형과 연산자
02장 자료형과 연산자02장 자료형과 연산자
02장 자료형과 연산자
 
C수업자료
C수업자료C수업자료
C수업자료
 
C수업자료
C수업자료C수업자료
C수업자료
 
02_3_여러가지연산자
02_3_여러가지연산자02_3_여러가지연산자
02_3_여러가지연산자
 
Ruby - 6th (루비 6장 변수와 식)
Ruby - 6th (루비 6장 변수와 식)Ruby - 6th (루비 6장 변수와 식)
Ruby - 6th (루비 6장 변수와 식)
 
스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오
 
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
 
부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리부울 대수와 컴퓨터 논리
부울 대수와 컴퓨터 논리
 
7주 JavaScript Part1
7주 JavaScript Part17주 JavaScript Part1
7주 JavaScript Part1
 
[Swift] Operator
[Swift] Operator[Swift] Operator
[Swift] Operator
 
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
 
06장 함수
06장 함수06장 함수
06장 함수
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagation
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
 
이산치2번
이산치2번이산치2번
이산치2번
 
13장 연산자 오버로딩
13장 연산자 오버로딩13장 연산자 오버로딩
13장 연산자 오버로딩
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차
 

Mehr von Circulus

Mehr von Circulus (10)

라즈베리파이와자바스크립트로만드는 IoT
라즈베리파이와자바스크립트로만드는 IoT라즈베리파이와자바스크립트로만드는 IoT
라즈베리파이와자바스크립트로만드는 IoT
 
라즈베리파이입문 - 연세대 특강
라즈베리파이입문 - 연세대 특강라즈베리파이입문 - 연세대 특강
라즈베리파이입문 - 연세대 특강
 
123D Design - 스마트폰 케이스 모델링
123D Design - 스마트폰 케이스 모델링123D Design - 스마트폰 케이스 모델링
123D Design - 스마트폰 케이스 모델링
 
JavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and RobotJavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and Robot
 
piBo- Personal Intelligent roBOt
piBo- Personal Intelligent roBOtpiBo- Personal Intelligent roBOt
piBo- Personal Intelligent roBOt
 
웨어러블 디바이스를 활용한 개인용 지능형 로봇
웨어러블 디바이스를 활용한 개인용 지능형 로봇웨어러블 디바이스를 활용한 개인용 지능형 로봇
웨어러블 디바이스를 활용한 개인용 지능형 로봇
 
라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드
 
라즈베리파이로 IoT 시작하기 복습
라즈베리파이로 IoT 시작하기 복습라즈베리파이로 IoT 시작하기 복습
라즈베리파이로 IoT 시작하기 복습
 
라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기
 
라즈베라파이란 무엇인가?
라즈베라파이란 무엇인가?라즈베라파이란 무엇인가?
라즈베라파이란 무엇인가?
 

2.Startup JavaScript - 연산자

  • 3. 연산자 연산자는 미리 정의된 처리를 행하는 기호 임. 처리되는 것은 피 연산자라 함. 산술 연산자는 표준적인 사칙연산과 수치에 관한 연산을 수행 연산자 개요 사용 예 결과 + 숫자의 덧셈 9+2 11 - 숫자의 뺄셈 9-2 7 * 숫자의 곱셈 9*2 18 / 숫자의 나눗셈 9/2 4 % 숫자의 나머지 연산 9%2 1 ++ 전치/후치 덧셈 x=3 일 때, x++ or ++x 3, 4 -- 전치/후치 뺄셈 x=3 일 때, x-- or --x 3, 2 X = =A + BOperator (연산자) Operand(피 연산자)
  • 4. 연산자 실습 데이터 형에 따라 연산 결과가 달라지며, 소수점 연산은 오차 발생 가능성 증가/감소 연산자의 경우 위치에 따라 의도하는 결과가 달라짐 // Operator console.log(100 + 1); // 101 console.log(100 - 1); // 99 console.log(100 * 5); // 500 console.log(100 / 5); // 20 console.log(100 % 3); // 1 console.log('100' + 1); // 1001 var today = new Date(); console.log(today); console.log(100 + today); // Post-Increment var a = 5; var b = a++; console.log(a); // 5 console.log(b); // 6 // Pre-Increment var c = 5; var d = ++c; console.log(c); // 6 console.log(d); // 6 // Float Number console.log(0.2 * 3); // 0.6000000000000001 console.log(0.2 * 3 === 0.6); // false console.log((0.2 * 10) * 3 / 10); // 0.6 console.log((0.2 * 10) * 3 === 0.6 * 10); //true
  • 5. 대입 연산자 (1/1) 지정된 변수에 특정 값을 대입하는 연산자로, = 이 대표 적임. 산술 연산자나 비트 연산자와 결합된 복합 대입 연산자도 포함 연산자 개요 사용 예 결과 = 변수 등에 값을 대입 함 x = 1 += 좌변 값에 우변 값을 더한 값을 대입 함 x = 3; x += 2 5 -= 좌변 값에 우변 값을 뺀 값을 대입 함 x = 3; x -= 2 1 *= 좌변 값에 우변 값을 곱한 값을 대입 함 x = 3; x *= 2 6 /= 좌변 값에 우변 갑을 나눈 값을 대입 함 x = 3; x %= 2 1.5 %= 좌변 값에 우변 값을 나눈 나머지 값을 대입 함 x = 3; x /= 2 1 &= 좌변 값에 우변 값을 비트 AND 연산한 값을 대입 함 x = 10; x &= 5 0 |= 좌변 값에 우변 값을 비트 OR 연산한 값을 대입 함 x = 10; x &= 5 15 ^= 좌변 값에 우변 값을 비트 XOR 연산한 값을 대입 함 x = 10; x ^= 5 15 <<= 좌변 값에 우변 값만큼 좌측 SHIFT 한 결과를 대입 함 x = 10; x <<= 2 20 >>= 좌변 값에 우변 값만큼 우측 SHIFT 한 결과를 대입 함 x = 10; x >>= 1 5 >>>= 좌변 값에 우변 값 만큼 우측 SHIFT 한 결과를 대입 (Unsigned) x = 10; x >>>= 2 2
  • 6. 대입 연산자 (1/2) 기본 대입 연산은 값 자체가 전달되나, 참조 형은 주소 값이 전달 됨 참조 형은 따라서 원본의 실제 값이 변경 시 참조된 값에도 영향을 줌 기본형 대입 연산자 기본형은 값이 직접 보관됨, a 의 값을 b로 전달할 경우 그 값이 복사되어, 영향이 없음 참조형 대입 연산자 참조형의 경우 값 자체가 보관되는 것이 아닌, 값을 보관하 는 주소가 변수에 보관되므로, array1 변경 내용이 array2 에 도 영향을 미침 주소 값 100 200 [0, 1, 2] -> [5, 1, 2] 300 1 기본형 참조형 1 1 변수x 변수yy=x 1 1 변수 array1 변수 array2 array2 = array1 참조 주소 복사 값에 영향을 미치지 않음 서로 동일한 주소를 보고 있으므로, 결과가 영향을 줌
  • 7. 대입 연산자 실습 일반 값을 대입하는 경우 기본형(Value), 배열과 같은 객체를 전달하는 경우 참조형 (Reference) 으로 처리가 됨 // = and + var a = 0; var b = 0; a = a + 1; b += 1; console.log(a); // 1 console.log(b); // 1 // value var x = 1; var y = x; x = 2; console.log(x); // 2 console.log(y); // 1 // reference var arr1 = [0, 1, 2]; var arr2 = arr1; arr1[0] = 10; console.log(arr1); // 10, 1, 2 console.log(arr2); // 10, 1, 2
  • 8. 비교 연산자 (1/2) 좌/우변의 값을 비교하여 결과를 반환. 이항 연산은 값만, 삼항은 데이터 형도 비교하므로, 오 동작 방지가 가능 연산자 개요 사용 예 결과 == 좌변과 우변의 값이 같을 경우 true 3 == 3 true != != 좌변과 우변의 값이 같지 않을 경우, true 3 != 3 false < 좌변이 우변보다 작은 경우, true 3 < 7 true <= 좌변이 우변보다 작거나 같을 경우, true 3 <= 3 true > 좌변이 우변보다 클 경우, true 3 > 7 false >= 좌변이 우벼보다 크거나 같을 경우, true 3 >= 3 true === 좌변과 우변의 값이 같고 데이터 형도 같은 경우, true 3 === 3 true !== 좌변과 우변 값이 같지 않거나 데이터 형이 다른 경우, true 3 !== 3 false ?: 조건 식? 식1:식2, true 인 경우 식1을 false 인 경우 식2를 수행 <x==1) ? 1:0 1 또는 0
  • 9. 비교 연산자 (2/2) 등가 연산자는 데이터 형이 다르더라도 최대한 값이 같게 시도하여 반환. 참조형의 경우는 값을 비교하는 것이 아닌 주소를 비교 함. 비교 데이터 형 평가 기준 동일 문자열/숫자/논리형 단순히 쌍방의 값이 동일한지를 판단 배열/객체 참조 장소가 동일한 지를 판단 null/undefined 쌍방이 모두 null/undefined 또는 null과 undefined 의 비교는 모두 true 틀림 문자열/숫자/논리형 문자열/논리형을 수치로 변환 후에 판단 객체 기본형으로 변환 후에 판단 주소 값 100 200 [1, 2, 6, 8, 10] 300 400 500 [1, 2, 6, 8, 10] 600 10 기본형 참조형 10 변수x 숫자형:num2 == 배열형:arr1 배열형:arr2 서로가 별개로 영향을 미치지 않음 10 10 숫자형:num1 !=
  • 10. 비교 연산자 실습 이항 연산자는 어떻게든 값이 같다고 판단하므로, 개발자가 데이터 형을 의식 하지 않아도 되나, 이로 인해 의도하지 않는 결과를 가져올 수 있음 // value ==, === console.log(1 == true); // true console.log(1 == '1'); // true console.log('0x10' == 16); // true console.log(1 === true); // false console.log(1 === '1'); // false console.log('0x10' === 16); // false // reference var arr1 = ['Banana', 'Apple', 'Orange']; var arr2 = ['Banana', 'Apple', 'Orange']; console.log(arr1 == arr2); // false // ?: operator var x = 90; console.log((x > 80) ? 'Success' : 'fail'); //Success
  • 11. 논리 연산자 (1/2) 논리 연산자는 복수의 식을 결합하여, 그 결과를 true/false 로 반환 비교 연산자와 조합하여 사용하며, 복잡한 조건식을 표현할 수도 있음 연산자 개요 사용 예 결과 && 좌우식이 모두 true 인 경우 true 100 == 100 && 1000 == 1000 true || 좌우시의 어느 쪽이든 true 인 경우 true 100 == 100 || 1000 = 500 true ! 식이 false 인 경우, true !(10 > 100) true 좌측 식 우측 식 && || true true true true true false false true false True false true false false false false && || !
  • 12. 논리 연산자 (2/2) 논리 연산자의 평가 결과는 좌/우측 식의 논리 값에 따라 달라짐 논리 AND/OR 연산자만 사용하는 경우, 우측 식은 판정되지 않을 수 있음 Logical && Logical || false 라면 x == 1 && alert(‘Hello 2’) x == 1 || alert(‘Hello 3’) true/false에 관계없이 true 라면 true/false에 관계없이 조건식 전체가 반드시 false 조건식 전체가 반드시 true 평가가 불 필요 평가가 불 필요 우측 식은 숏컷 (무시) 우측 식은 숏컷 (무시)
  • 13. 논리 연산자 실습 복수의 조건식과 논리 값을 논리적으로 결합하여 결과를 true/false 로 반환 비교 연산자와 조합하여 복잡한 조건식을 만들어 냄 // == Logical Compare var x = 1; var y = 2; var z = null; console.log(x == 1 && y == 1); // false console.log(x == 1 || y == 1); // true // Short Curcuit x == 1 && alert('Hello 1'); // popup x == 2 && alert('Hello 2'); // pass y == 2 || alert('Hello 3'); // pass
  • 14. 기타 연산자 비트 연산은 정수 값을 2로 나타냈을 때, 각 bit 단위로 논리 계산을 수행 콤마와 delete, new, typeof instanceof 등 이용 가능한 연산자가 있음 연산자 개요 사용 예 & 좌우 값 모두에 세트된 비트 (AND 연산) 10&5 -> 1010&0101 -> 0000 -> 0 | 좌우 값 중 어느 쪽이든 세트된 비트 (OR 연산) 10|5 -> 1010|0101 -> 1111 -> 15 ^ 좌우 값중 어느쪽이든 세트 되었거나 양쪽 모두 세 트되지 않은 비트 (XOR 연산) 10^5 -> 1010^0101 -> 1111 -> 15 ~ 비트를 반전 (NOT 연산) ~10 -> ~1010 -> 0101 -> -11 << 비트를 좌측으루 SHIFT 10<<1 -> 1010<<1 -> 10100 -> 20 >> 비트를 우측으로 SHIFT 10>>1 -> 1010>>1 -> 0101 -> 5 >>> 비트를 우측으로 SHIFT 하되, 좌측을 0 으로 채움 10>>>2 -> 1010>>>2 -> 0010 -> 2 연산자 개요 연산자 개요 , (콤마) 좌우의 식을 계속하여 실행 new 새로운 인스턴스를 생성 delete 객체의 프로퍼티나 배열의 요소를 삭제 typeof 오퍼랜드의 데이터형을 취득 instanceof 객체가 지정된 클래스의 인스턴스인지를 판정 void 미정의 값을 되돌림
  • 15. 기타 연산자 실습 Delete 는 지정된 변수, 배열, 객체를 메모리에서 삭제함. 배열 삭제 시 해당 요소만 삭제, 프로퍼티의 경우 참조 객체는 삭제되지 않음 // delete var arr = ['Banana','Tomato','Orange']; delete arr[0]; console.log(arr); // [, 'Tomato','Orange'] var obj = { x : 10, y : 20 }; delete obj.x; console.log(obj); // { y : 20} var num = 10; // Can't delete delete num; console.log(num); // 10 // typeof var num = 1; var str = 'Hello'; var bool = true console.log(typeof num);// number console.log(typeof str);// string console.log(typeof bool); // boolean // instanceof console.log(typeof obj); console.log(obj instanceof Object); console.log(obj instanceof Array); console.log(typeof arr); console.log(arr instanceof Object); console.log(arr instanceof Array);
  • 16. 결합 순서 / 우선 순위 (1/2) 연산자를 좌->우, 우->좌 등, 어떤 방향으로 결합할지 정하는 규칙 연산자 우선순위가 동일할 경우, 결합 순서를 가지고 어느 쪽 부터 인지 결정 좌우 데이터 형 데이터 형 기준 좌 -> 우 산술 연산자 단순히 쌍방의 값이 동일한지 비교 비교 연산자 참조 장소가 동일한지 판단 논리 연산자 쌍방 모두 null/undefined 또는 null과 undefined의 비교는 모두 true 비트 연산자 <<. >>, >>>, &, ^, | 그 외 ., [], (), ,, instanceof, in 우 -> 좌 산술 연산자 ++, -- 대입 연산자 =, +=, -=, *=, /=, %=, &=, ^=, |= 논리 연산자 ! 비트 연산자 ~ 조건 연산자 ?: 그 외 -(부호반전), +(무연산), delete, typeof, void
  • 17. 결합 순서 / 우선 순위 (2/2) 수학에서 *, / 는 +, - 보다 우선 처리 됨 복수 연산자가 포함된 경우 우선 순위가 높은 순으로 연산 수행 [ ]1 ( ) ++2 -- - ~ ! *3 / % +4 - <<5 >> <6 <= >= > ==7 != === >>> !== &8 ^9 |10 &&11 ||12 ?:13 14 = += -= 15 ,
  • 18. 결합 순서 / 우선 순위 실습 각각의 연산자는 우선 순위를 가지고 있음 우선 순위 판별 시 순위가 동일하면, 결합 순서로 연산 순서를 판별 var a = 3 * 5 + 2 * 2; var b = (3 * 5) + (2 * 2); console.log(a); // 19 console.log(b); // 19 var c = 2 * 5 - 3; var d = 2 * (5 - 3); console.log(c); // 7 console.log(d); // 4 var x = c *= 3; var y = ( c *= 3); console.log(x); // 21 console.log(y); // 63
  • 19. W www.circul.us G group.circul.us S social.circul.us C cafe.circul.us CONTACT.US circulus@circul.us THINKER TO MAKER ANY QUESTION? x