반응형

# 자바스크립트 학습

# 산술연산자

## - 연산자

  • 왼쪽 표현식 평가 결과에서, 오른쪽 표현식 평가 결과를 뺍니다.
  • String 타입이지만, 값이 숫자이면 Number 타입으로 변환하여 계산한다.
log("135" - 2);

=>
135가 String 타입이지만, 값이 숫자이므로
값을 Number 타입으로 변환하여 계산
133

## * 연산자

  • 왼쪽 표현식 평가 결과와, 오른쪽 표현식 평가 결과를 곱한다.
  • 숫자 값으로 변환할 수 있으면 변호나하여 곱한다.
  • NaN 반환 : 양쪽의 평가 결과가 하나라도 숫자가 아닐 때, NaN을 반환한다.
log(10 * "20");
log(10 * true);
log(10 * false);
log(10 * null);
log(10 * "A"); 

=>
200
10
0
0
NaN
  • 소수 값이 생기는 경우 처리
log(2.3 * 3);
log(2.3 * 10 * 3 / 10);

=>
6.8999999999999995	// IEEE 754 유동 소수점 처리 때문
6.9	// 위 대응 방법으로 실수를 정수로 변환하여 값 구하고, 다시 정수를 실수로 변환

## / 연산자

  • 왼쪽 표현식 평가 결과를 오른쪽 표현식 평가 결과로 나눈다.
  • NaN 반환 : 양쪽의 평가 결과가 하나라도 숫자가 아닐 때, 분모와 분자 모두 0일 때 NaN 반환

## % 연산자

  • 왼쪽 표현식 평가 결과를 오른쪽 표현식 평가 결과로 나누어 나머지를 구한다.
  • 3 % 2의 나머지는 1
log(5 % 2.5);
log(5 % 2.3);
log((5 *10 - (2 * 2.3 * 10)) / 10);

=>
0
0.40000000000000036	// IEEE 754 유동 소수점 처리 때문
0.4	// 위 해결위해 실수를 정수로 변환하여 연산 후 다시 정수를 실수로 변환

# 단항 연산자

## 단항 + 연산자

  • 형태 : +value
  • 값을 Number 타입으로 변환한다.
var value = "7";
log(typeof value);
log(typeof +value);
log(typeof Number(value));	// Number() 함수가 가독성이 더 좋다.

=>
string
number
number

## 단항 - 연산자

  • 형태 : -value
  • 값의 부호를 바꾼다. ( +는 -로, -는 +로 바꾼다.)
  • 연산을 할 때만 바뀌며, 원래 값은 바뀌지 않는다.
var value = 7;
log(-value);
log(8 + -value);
log(value);

=>
-7
1	// 8 + (-7)
7

# 후치, 전치, 논리 NOT 연산자

## 후치 ++ 연산자

  • 형태 : value++
  • 값을 자동으로 1 증가 시킨다.
  • 문장을 수행한 후에 1 증가 시킨다. (문장을 수행한 후에 1증가, 즉, 세미콜론(;) 다음에서 증가)
var one = 1;
var value = one++ + 3;	// 1 + 3으로 value = 4, 그 후 one의 값 2로 변경
log(value);
log(one);

=>
4	
2

## 전치 ++ 연산자

  • 형태 : ++value
  • 값을 자동으로 1 증가 시킨다.
  • 문장 안에서 1 증가 시킨다. (표현식을 평가하기 전에 1증가, 표현식에서 증가된 값을 사용한다.)
var one = 1;
var value = ++one + 3;	// one가 2로 값 변경, 2 + 3 = 5
log(value);

=>
5

## 후치 -- 연산자

  • 형태 : value--
  • 값을 자동으로 1 감소 시킨다. (문장을 수행한 후에 1감소, 즉, 세미콜론(;) 다음에 감소
var two = 2;
var value = two-- + 3;	// 2 + 3 = 5 계산 후, two 값 변경
log(value);
log(two);

=>
5
1

## 전치 -- 연산자

  • 형태 : --value
  • 값을 자동으로 1 감소 시킨다. (표현식을 평가힉 전에 1 감소, 표현식에서 감소된 값을 사용한다.)
var two = 2;
var value = --two + 3;	// two 값 변경 후 계산 1 + 3 = 4
log(value);

=>
4

## ! 연산자

  • 논리 NOT 연산자
  • 형태 : !value
  • 표현식 평가 결과를 true, false로 변환한 후, true이면 false로, false이면 true로 변환한다.
  • 원래 값은 바뀌지 않으며, 사용할 때만 변환한다.
var value = true;
log(!value);
log(!!"A");	// "A"는 true, !"A"는 false, !!"A"는 true

=>
false
true

# 유니코드, UTF

## 유니코드 (Unicode)

  • 세계의 모든 문자를 통합하여 코드화 한 것
  • 언어, 이모지 등이 코드화 되어 있다.
  • 코드 값을 코드 포인트 (code point)라고 부른다.
  • 형태 : 0000~FFFF로 되어 있다. 10000 ~ 1FFFF 값에 문자가 매핑된다.
  • 유니코드 컨소시엄에서 관장한다. (http://www.unicode.org/)

## 유니코드 표기방법

  • u와 숫자 형태 : u0031은 숫자 1
  • 자바스크립트는 u엎에 역슬래시(\)를 작성한다.
log("\u0031");	//	1
log("\u0041");	//	A
log("\u1100");	//	ㄱ
log("\uac01");	//	각
  • 역 슬래시 자체를 문자로 표시하기 위해서는 역 슬래시 2개를 작성(\\)
log("\\u0031");	// \u0031
log("\\u0041");	// \u0041
  • ES6에서 표기 방법 추가 (ES5는 4자리만 지원, ES6는 5자리 지원)

## UTF

  • Unicode Transformation Format
  • 유니코드의 코드 포인트를 매핑하는 방법으로 UTF-8, UTF-16. UTF-32로 표기한다.
  • <meta charset="utf-8">
  • UTF-8은 8비트로 코드 포인트를 매핑하겠다는 것으로, 8비트 인코딩(Encoding)이라고 부른다.
반응형

+ Recent posts