본문 바로가기
개발/Android, Web

[React] 한입 크기로 잘라 먹는 리액트 정리 (1)

by candosh 2023. 7. 17.

자료형과 형 변환

- Primitive Type(원시 타입)

한 번에 하나의 값만 가질 수 있다. 하나의 고정된 저장 공간 이용

let number = 10;

- Non-Primitive Type(비 원시 타입)

한 번에 여러 개의 값을 가질 수 있다. 여러 개의 고정되지 않은 동적 공간 사용

let array = {1, 2, 3, 4, 5};

 

자료형 코드 예시

let age = 20; //정수

let tall = 180.1; //실수

let int = Infinity; //무한대

let minusInt = -Infinity; //음의 무한대

let nan = NaN; //수학적 연산 실패

 

undefined

변수에 값을 할당하지 않고, 출력 시 자동으로 undefined라는 값을 할당받음

변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 정해지지(undefined) 않은 상태

 

null

변수는 존재하나, null로 (값이) 할당된 상태. 즉 null은 자료형이 정해진(defined) 상태

let variable1;
console.log(variable1); //undefined

let variable2;
console.log(variable2); //null


백틱 & 템플릿리터럴

템플릿 리터럴 내의 모든 공백은 있는 그대로 적용되고 엔터도 적용됨.

let engName = "React";
let korName = "리액트";
let res = `React ${korName};
console.log(res); //React 리액트

 

casting

JavaScript 엔진은 다른 자료형 간의 연산을 수행할 때 적절하게 변환(casting)해서 연산을 수행해준다.

명시하지 않은 자동 형변환은 묵시적 형변환이라고 부른다.

//형변환 테스트 코드

//값은 유지하며 자료형을 변경하는 형변환
let numberA = 12;
let numberB = 2;

console.log(numberA * numberB); //24

//값은 유지하며 자료형을 변경하는 형변환
let numberC = 12;
let numberD = "2";

console.log(numberC * numberD); //24 -> 문자열 2를 자동으로 숫자 2로 인지 후 계산

//문자열과 숫자의 덧셈은 숫자를 문자열로 바꿔서 문자열을 붙임
let numberE = 12;
let numberF = "2";

console.log(numberE + numberF); //122

//이 경우 parseInt()로 해결
console.log(numberE + parseInt(numberF)); //14

 

연산자

  • 대입
  • 연결
  • 복합
  • 증감
  • 논리
  • 비교
  • 대소비교
  • typeof
    • 값의 타입을 알 수 있는 연산자
    • 확실한 값의 타입 일치확인을 위해서는 비교 연산자인 "==="을 활용하는 것이 좋다.
let compareA = 1;
compareA = "1";

console.log(typeof compareA); //string
  • null 변환 연산자
    • 양쪽의 피연산자 중에 null이나 undefined가 아닌 값을 선택함
let a; //undefined
a = a ?? 10;
console.log(a); //10

 

조건문

어떤 연산의 결과의 참/거짓에 따라서 다른 명령을 각각 실행할 수 있도록 도와주는 문법

  • if/ else if/ else
  • switch

 

함수 선언식과 함수 표현식

//함수 표현식과 선언식의 차이
console.log(helloB()); //호이스팅
console.log(helloA()); //error!

//함수 표현식 - 호이스팅 x
//함수 표현식으로 생성된 함수들은 해당 함수가 직접적으로 선언되기 전에는 접근 불가
let helloA = function() {
	return "hi";
}; 

console.log(helloA()); //정상수행

//함수 선언식 - 호이스팅 o
function helloB() {
	return "hi";
}

** 호이스팅 : 함수 선언식으로 만들어진 함수들은 프로그램 실행 전에 프로그램 최상단으로 끌어올려진다. 그래서 밑에서 선언을 하여도 위에서 호출하여도 정상적으로 출력된다.

 

화살표 함수

let helloA = () => {
	return "hi";
};

console.log(helloA()); //hi

//더 간략화 사용 가능
let helloA = () => "hi";
console.log(helloA()); //hi

 

콜백함수

어떤 다른 함수에 매개변수로 함수를 넘겨주는 것

매개변수로 넘겨받은 함수는 일단 넘겨받고, 때가 되면 나중에 호출(called back)한다는 것이 콜백함수의 개념이다.

function checkMood(mood, goodCallback, badCallback) {
  if (mood === "good") {
    //기분 좋을 때 하는 동작
    goodCallback();
  } else {
    //기분 안 좋을 때 하는 동작
    badCallback();
  }
}

function cry() {
  console.log("ACTION :: CRY");
}

function sing() {
  console.log("ACTION :: SING");
}

function dance() {
  console.log("ACTION :: DANCE");
}

checkMood("sad", sing, cry);

//checkMood 함수가 먼저 호출되고, 매배변수로 들어온 mood의 값에 따라 sing, cry 함수 둘 중 한가지가 나중에 호출된다.

 

객체

주로 객체 리터럴 방식으로 객체를 생성함

객체는 자바스크립트에서 데이터를 표현하는 방식 중 하나로 key, value 쌍으로 구성

let example = {
	'name':'Cindy',
    	'age':21
    	//키(key):프로퍼티 명 , 값(value):프로퍼티 값
  • 문자, 숫자, 함수, 배열, undefined, boolean 등 모든 자료형을 property value로 사용할 수 있음
  • key는 반드시 문자열로 이루어져야 함

 

내장 배열 함수

JS는 굉장히 많은 내장함수들을 가지고 있음

내장함수는 객체의 메서드와 같은 것

 

- forEach

forEach메서드는 배열을 반복하는 매서드, for문을 보다 쉽게 구현하는 것

//for문 사용
const a = [1,2,3,4,5];

for(let i=0; i<a.length; i++) {
	console.log(a[i]); //12345
}

//forEach 사용
const a = [1,2,3,4,5];

a.forEach(function(s) {
	console.log(s); //12345
})

- Map

Map 메서드는 해당 원본 배열의 모든 요소를 이용하여 새로운 배열을 반환하는 메서드

const a = [1,2,3,4,5];

const b = a.map(function(s){
	return s * s;
})

console.log(b); //1 4 9 16 25

- includes

주어진 배열에서 전달받은 인자와 일치하는 값이 존재하는지 확인 (===값과 타입까지)

주어진 배열에서 인자로 받은 값이 존재하는지 아닌지 boolean으로 return 한다.

//값이 배열에 존재하는지 안 하는지
const arr = [1,2,3,4,5];

let number = 3;

arr.forEach((value) => {
	if(value === number){
    	console.log(true);
     }
});

console.log(arr.includes(number));

그 외에도 filter, reduce, splice, slice, shift, pop, unshift, push, indexof, findindex, find, join 다양한 내장함수가 있다.

'개발 > Android, Web' 카테고리의 다른 글

[React] useState()  (0) 2023.07.28
[프론트엔드] 자바스크립트(Javascript)  (1) 2023.05.07