2022.01.18 - 2022.01.22
몰랐던 것 위주로 정리
javascript(기초)
🥕 var
let
const
를 사용하여 변수 선언 가능
var
: 이미 선언된 변수라도 재선언 가능let
: 이미 선언되어 있다면 재선언 불가, 초기화는 가능const
: 재선언, 재할당 불가능(상수(변하지 않는 값)에 사용)ex>
var num; // 변수 선언
// 변수 선언 및 초기화
var num = 1;
let cnt = 1;
const pi = 3.14;
String
: 문자열Number
: 숫자(정수(음수 포함), 실수)Function
: 함수Array
: 배열Object
: 객체Boolean
: 논리값(true/false)undefined
: 정의되지 않음 (변수가 선언되고 초기화는 이루어지지 않은 경우)null
: 널(의도적으로 빈 데이터로 초기화한 경우)✔ 문자열의 경우 큰따옴표 혹은 작은 따옴표가 데이터에 포함이라면 앞에 \
를 붙임
✔ 주석은 한 줄일 경우 //
여러 줄일 경우 /* */
사용
🥕 함수 생성 방법
var myfunc = function(){
return "my func!";
}
myfunc(); // my func!
function myfunc(){
return "my func!";
}
myfunc(); // my func!
🥕 객체(Object)
var student = {
name: "sun",
age: "20",
family: ['moon', 'star', 'earth'],
message: function(num1, num2){ return `${num1} + ${num2} = ${num1 + num2} 입니다` }
}
// name, age, family 는 프로퍼티, message는 메서드
// 문자열 안에 변수 넣을 경우 백틱으로 감싼 문자열 안에 ${변수} 형식으로 작성
console.log(student.name) // sun
console.log(student['family']) // 배열 리턴
console.log(student.message(1, 2)) // 1 + 2 = 3 입니다
🥕 문자열 프로퍼티 / 메서드
String.length
: 문자열 길이 반환String.charAt(index)
: 문자열의 해당 인덱스의 글자 반환String.split()
: 괄호 안에 주어진 값을 기준으로 분리 후 배열로 반환(아무것도 없는 경우 글자별로 나눔)String.match(정규표현식)
: 정규 표현식에 해당하는 부분을 배열로 리턴🥕 배열 프로퍼티 / 메서드
Array.length
: 배열 길이 반환Array.push
: 배열 맨 뒤에 요소 삽입Array.pop
: 배열 맨 뒤 요소 제거Array.unshift
: 배열 맨 앞에 요소 삽입Array.shift
: 배열 맨 앞에 요소 제거Array.splice(index, cnt)
: 해당 index로부터 cnt개수만큼을 제거Array.join()
: 배열을 콤마(기본값)를 기준으로 이어붙임, 공백으로 잇고 싶은 경우 괄호 안에 ' '를 입력Array.sort()
: 배열을 정렬(기본값 → 유니코드 값으로 정렬)function compareNumbers(a, b) {
return a - b;
}
// 오름차순 정렬, 내림차순으로 하고 싶을 때는 return b - a;
arr.sort(compareNumbers)
✔ 정렬 방식 참고 블로그 https://hianna.tistory.com/409
✔ 더 많은 배열 메서드 및 프로퍼티
🥕 그 외
Math.abs(num)
: num의 절댓값 반환Math.ceil(num)
: num의 올림값 반환Math.floor(num)
: num의 내림값 반환Math.random()
: 0에서 1 사이에 랜덤값 반환parseInt(sth)
: sth를 정수로 변경(값이 숫자인 문자열인 경우)parseFloat(sth)
: sth를 실수로 변경(값이 숫자인 문자열인 경우)✔ 콘솔로 입력 받을 경우
//콘솔을 통해 값을 입력 받기 위해서는 readline 모듈 사용
const readline = require("readline");
//readline 모듈을 이용해 입출력을 위한 인터페이스 객체 생성
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
//rl 변수는 아래와 같이 이용
rl.on("line", (line) => {
// 한 줄씩 입력받은 후 실행할 코드
// 입력된 값은 line에 저장된다.
rl.close(); // close가 없으면 입력을 무한히 받는다.
});
rl.on('close', () => {
// 입력이 끝난 후 실행할 코드
})
+, -, *, /, %(나머지)
+
를 제외한 다른 연산은 문자가 숫자로 바뀜// ex>
let a = "5";
let b = 3;
console.log(a+b); // 53
console.log(a-b); // 2
console.log(a*b); // 15
console.log(a/b); // 1.66666..
console.log(a%b); // 2
num++
, num--
, ++num
, --num
이 있음// ex>
let num = 3;
console.log(++num); // 4
console.log(num++); // 4(위에서 더했음) => num = 5
console.log(++num); // 6
==, ===, !=, !==, >, >=, <, <=
==
: 값이 같다(같지 않다 !=
)===
: 데이터 타입과 값이 같다(같지 않다 !==
)>, >=, <, <=
✔ 두 값을 비교할 때 ==
은 데이터 타입을 동일하게 만든 뒤 비교,
===
은 데이터 타입까지 동일한지 비교
&&(and), ||(or)
🥕 if문 / switch문
/* if (조건) { 수행할 명령 }
else if (조건) { 수행할 명령 }
else { 수행할 명령 } */
const num = 10;
if (num > 10) { console.log("10보다 큽니다");}
else if ( num == 10) { console.log("10입니다");}
else { console.log("10보다 작습니다");}
// 10입니다
/* switch(비교대상) {
case (value) :
비교 대상이 value일때 수행할 명령
break;(안하면 멈추지 않고 다음 케이스로 또 넘어감)
...
default :
위에서 매치되는 케이스가 없는 경우 수행할 명령
} */
switch(num){
case 10:
console.log("10입니다");
break;
case 0:
console.log("0입니다");
break;
default:
console.log("10도 아니고 0도 아닙니다");
}
// 10입니다
🥕 for문 / while문 / do-while문
// for (초기값; 조건 ; 증감 표시) { 수행할 명령 }
for (let i = 0; i < 10; i++) {
if (i % 3 == 0) console.log(i);
} // 3, 6, 9
// while (조건) { 수행할 명령 }
var i = 0
while (i < 5) {
console.log(i);
i++;
} // 0, 1, 2, 3, 4
// do { 수행할 명령 } while(조건)
var num = 5;
do { console.log(num)} while ( num < 5 );
// 5
✅ 연산이 python과 살짝 다른 점이 있어 헷갈렸음
→ javascript는 형변환을 통해 두 비교 대상의 타입을 맞춘 뒤에 연산 수행
✅ 변수 선언할 때 var
, let
, const
를 상황에 맞게 사용해야 할듯