SOCO

opertator, if, for loop 본문

프론트/java script 기초지식

opertator, if, for loop

ssooda 2021. 6. 11. 15:15

variable ; mutable(let), constant ; immutable(const)

variable -> 메모리의 값을 읽고 쓰는 게 가능함

값을 할당한 다음 변경이 가능함

constant -> 메모리의 값을 읽기만 가능함 

선언&할당한 다음에는 읽기만 가능하고 다시 다른 값을 쓰는 것이 불가능함

 

 

js는 변수이ㅡ 값이 바뀔 이유가 없으면 const로 선언하는 것이 좋은 습관임 

 

메모리의 값이 저장되는 두가지의 방법이 있음

1. 프리미티브 타입인지

2.오브젝티브 타입인지에 따라서 다른 방식으로 저장됨 

1-> value 값 자체가 메모리에 저장됨

2-> object는 메모리에 한 번에 갈 수 없고 const ellie라고 선언하고 object를 할당하게 되면

엘리가 가리키고 있는 곳에는 레퍼런스가 있음 레퍼런스는 오브젝트를 가리키고 있는 곳임 레퍼런스를 통해 실제로 오브 젝트가 담겨있는 메모리를 가리키게 됨 const ellie라고 선언하면 엘리가 가리키는 포인터만 잠김 엘리가 다른 오브젝트로 변경이 불가능하지만 엘리의 이름과 나이는 계속 변경이 가능함

 

그래서 프리미티브 타입은 벨류로 값이 저장되고 

오브젝트는 오브젝트를 가리키는 레퍼런스가 메모리에 저장된다.

 

immutable data types : primitive types, frozen objects

mutable data type : object

 

 

operator

string concatenation

+ 를 이용해서 문자열과 문자열을 합해서 새로운 문자열을 만들 수 있음

문자열에 숫자를 더하면 숫자가 문자열로 변환되어서 합해짐

백틱 기호를 이용해서 string literals도 만들 수 있음 ${}이용하면 변수값을 계산해서 string으로 포함해서 문자열을 만들게 됨

스트링리터럴즈의 좋은 점은 줄바꿈, 중간에 특수기호를 이용해도 그대로 문자열로 변환되어서 나옴

작은 따옴표를 이용하는 경우 중간에 작은 따옴표가 인식되지 않음 이 경우 백슬러시를 앞에 붙여줘야함 

새로 줄바꿈을 할 때는 백슬러시n해야 줄바꿈이 됨 

 

numeric operators

숫자를 더하고 뺴고 나누고 곱하고 나누고 나머지값 제곱

 

preincrement

preincrement = ++counter

counter = counter+1업데이트

preincrement = counter할당

postincrement

postincfement = counter 할당

counter = counter +1업데이트

 

++(+1) --

predecrement

postdecrement

 

=operator 할당 하는 오퍼레이터

x=x+y

x+=y

 

비교하는 오퍼레이터

<=

>=

 

logical operator

|| && !

or 연산자는 앞에서 true가 나오면 앞에서 멈춤(뒤로 안 감)

뒤에 true가 있어도 뒤에는 출력이 안 됨

심플한 아이를 앞에 배치하고

익스프레션이나 함수는 뒤에 배치해야함 

 

and 연산자는 앞에서 false가 나오면 앞에서 멈춤

and도 해비한 것은 뒤에서 체크하는 것이 좋음

 

and는 null체크를 할 때도 많이 쓰음 

object가 null이면 false가 되기 때문에 &&뒤에가 실행이 안 됨 

nullableObject && nullableObject.something

-> nullableObject가 null이 아닐 때만 이 오브젝트의 something이라는 벨류를 받아오게 됨

이걸 코드로 풀어보면 if 문인 것임 

 

!연산자 

값을 반대로 바꿔줌

 

equality

== -> loose equality 타입을 변경해서 검사함

!=

 

===-> strict equality 타입을 신경써서 검사함

 

object는 메모리에 탑재될때 ref형태로 저장됨

 

conditional operators

if, else if, else

 

if 를 간단하게 쓸 수 있는 ternary operator (?)

condition ? value1 : value2

condition이 true면 왼쪽

아니면 오른쪽

 

 

switch

switch( ) {

case 비교:

case연달아서 묶을 수 있음 

case   :

case   :

 

 

while() {}  loop -> 조건을 검사하고 블럭을 실행

do{}  while()   -> 블럭을 실행하고 조건을 검사

블럭을 먼저 실행하고 싶으면 do while

조건문이 맞을 떄만 블럭을 실행하고 싶으면 while loop

 

for loop

for (시작;조건;스탭)

기존에 존재하는 변수를 사용할 수도 있고 for 안에서 inline variable declaration

블럭안에 let이라는 지역변수를 선언해서 작성할 수도 있음

 

nested loops

for문 안에 for

 

break, continue

break는 loop를 완전히 끝내는 것이고 

continue는 지금껏만 스킵하고 다시 반복문의 처음으로 돌아가는 것임