참고: https://youtu.be/KF6t61yuPCY
✔️ 변수
[ let ]
- 변할 수 있는 값을 선언
[ const ]
- 절대로 바뀌지 않는 상수 (수정 X)
- 보통 대문자로 선언
const PI = 3.14;
const SPEED_LIMIT = 50;
const BIRTH_DAY = '2020-01-01';
❗Tip
- 모든 변수를 const로 선언
- 변경될 여지가 있는 변수를 let으로 변경
1) 변수는 문자와 숫자, $와 _만 사용
2) 첫 글자는 숫자가 될 수 없음
3) 예약어는 사용 불가 ex) class, let
(참고: https://www.w3schools.com/js/js_reserved.asp)
4) 가급적 상수는 대문자로 사용
5) 변수명은 읽기 쉽고 이해할 수 있게 선언
✔️ 자료형
[ 문자형 String ]
- 더블쿼터, 싱글쿼터, 백틱으로 작성할 수 있음
- 더블쿼터 내 더블쿼터 혹은 싱글쿼터 내 싱글쿼터를 사용할 때는
역슬래시(\)를 쿼터 앞에 붙혀서 사용 가능
- 백틱은 문자형 내부에 변수를 사용하고 싶을 때,
${변수}와 같이 사용할 수 있고 또는 표현식 ${30+1}을
넣어서 사용할 수 있음
[ 숫자형 Number]
- 30 또는 3.14와 같은 정수와 실수를 의미
- 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%) 연산이 가능
- 1/0과 같은 계산을 하게 되면 무한대(Infinity)를 얻을 수 있음
- 문자열/숫자와 같은 계산을 하게 되면 NaN(Not a Number)을 얻을 수 있음
[ 불린형 Boolean ]
- true 참과 false 거짓으로 구분됨
- 연산자와 함께 사용하는 비교 구문에 주로 사영
[ null 과 undefined ]
- null은 "존재하지 않는 값"을 의미
- undefined는 "값이 할당되지 않음"을 의미
let age;
console.log(age);
// 결과
undefined
let user = null;
console.log(user);
// 결과
null
[ typeof 연산자 ]
- 변수의 타입을 확인할 수 있다.
- 다른 개발자가 선언한 변수의 타입을 확인하거나,
API 통신 등을 통해 받아온 데이터를 타입에 따라
처리하는 경우에 주로 사용
const name = "Mike"
console.log(typeof 3); // "number"
console.log(typeof name); // "string"
console.log(typeof true); // "boolean"
console.log(typeof "test"); // "string"
console.log(typeof null); // "object"
console.log(typeof undefined); // "undefined"
여기서 typeof null이 객체형으로 나오는데 null은 사실 객체가 아니다.
자바스크립트 하위 호환성 유지를 위해 수정하지 않는다고 한다.
✔️ alert, prompt, confirm
[ alert ]
- 알려주는 역할 담당
- 사용자가 확인을 누를 때까지 표시
- 사용자와의 상호작용보다는 일방적 표시
[ prompt ]
- 입력 받는 역할 담당
- 취소와 확인 버튼이 생성되며 입력창 생성
- 변수를 입력받고 prompt에서 취소를 하게 되면,
해당 입력받은 변수에는 null이 반환됨
- prompt(arg1, arg2)라고 하였을 때, arg1은 prompt의 메세지를
arg2는 default 값을 설정할 수 있음
[ confirm ]
- 확인 받는 역할 담당
- alert와 같이 메세지를 표시
- alert와 다르게 확인과 취소 버튼이 존재
- 확인을 누르면 변수는 true를 반환하고,
취소를 누르면 false를 반환함
❗기본 제공 기능의 단점
1) 스크립트 일시 정지 (알림마다 확인눌러야 함)
2) 스타일링 불가능 (브라우저마다 스타일이 다름)
✔️ 형변환 (Type Conversion)
❓형변환이 필요한 이유
// String
"Hello" + "World" = "Hello World"
// Number
100 + 200 = 300
// String + Number ?
"100" + 200 = ??
예를 들어 prompt로 90과 80을 입력받은 수에
2로 나누게 되면 문자형을 더하여 나눈 9080/2가
console.log에 찍혀 4540이 출력되게 된다.
여기서 9080은 "9080" 즉, 문자형에 해당되는데
나눗셈 연산이 가능한 이유는 나눗셈과 같은 표현식은
숫자형으로 자동 변환되기 때문이다.
예를 들어 "6" / "2" = 3과 같은 결과를 자동 형변환이라고 한다.
이러한 변환은 오류를 발생시킬 수 있기 때문에
알맞게 자료형을 입력하는 명시적 형변환을 사용해야 한다.
이러한 명시적 형변환은 다음과 같이 사용할 수 있다.
1) String()은 문자형으로 변환
- 모든 값을 문자형으로 변환이 가능
2) Number()는 숫자형으로 변환
- 숫자만 형변환이 가능
- 형변환되지 않는 값은 NaN을 반환
- true는 숫자 1, false는 숫자 0을 반환
3) Boolean()은 불린형으로 변환
- false만 기억하면 됨
- 숫자 0, 빈 문자열(''), null, undefined, NaN
- 이 값들은 모두 false를 반환하고,
이 외에는 모두 true가 된다.
❗주의사항
1) Number(null)은 0이 된다.
2) Number(undefined)는 NaN이 된다.
Number(null) // -> 0
Number(undefined) // -> NaN
Number(0) // false
Number('0') // true
Number('') // false
Number(' ') // true
✔️ 기본 연산자
곱셈(*)과 나눗셈(/)은 더하기(+)와 빼기(-)보다
우선순위가 높다. 또한, 파이썬처럼 num = num + 5;를
num += 5; 처럼 줄여서 사용할 수 있다.
C언어처럼 num++, num-- 처럼 증감 연산자를 사용할 수 있다.
또한, ++num, --num 처럼 전위와 후위 연산을 진행할 수 있다.
%는 나머지를 구할 때 사용할 수 있다.
✔️ 비교 연산자, 조건문 (if, else)
같은가는 ==을 사용하고, 다른가는 !=를 사용한다.
비교 연산에 대해서는 항상 true 혹은 false로
불린형을 반환하게 된다. (이를 동등 연산자라고 한다.)
하지만, 이에 대해서 약한 연산과 강한 연산으로 나누는데
이를 일치 연산자라고 한다.
1 == "1" 은 true를 반환하는데, type까지 일치해야하는 비교를
1 === "1" 이라고 사용하게 되고 이는 false를 반환한다.
if(조건식) { } 를 사용할 수 있는데, 브라켓은 가독성을 위해 사용해야한다.
const age = 30;
if(age > 19) {
console.log('Hello?');
}
if(age <= 19) {
console.log('bye');
}
console.log('---------');
// 위의 코드를 else로 간단히 작성
if(age > 19) {
console.log('Hello?');
} else {
console.log('bye');
}
// 위의 코드를 else if로 작성
if(age > 19) {
console.log('Hello?');
} else if(age === 19) {
console.log('수능');
} else {
console.log('bye');
}
✔️ 논리 연산자 (AND, OR, NOT)
[ || (OR) ]
- 여러개 중 하나라도 true면 true
- 모든 값이 fasle 일때만 false를 반환
- 첫 번째 true를 발견하는 즉시 평가를 멈춤
[ && (AND) ]
- 모든 값이 true면 true
- 하나라도 fasle면 false를 반환
- 첫 번째 false를 발견하는 즉시 평가를 멈춤
[ ! (NOT) ]
- true면 false
- false면 true
❗Tip
- 만약 전체 데이터에서 80%, 60%, 7%의 데이터가 있다면,
7%, 60%, 80%로 연산자를 배치하여 성능 최적화를 도울 수 있다.
✔️ 반복문 (for, while, do while)
for 문은 초기값 (let i = 0;), 조건 (i < 10;), 코드 실행 후 작업 (i++)
총 세 부분으로 나누어 작성할 수 있다.
이는 0부터 9까지 총 10번의 작업을 수행하는 loop이 된다.
while 문은 초기값을 외부에서 선언하고
while (조건식) { } 처럼 작성하고 조건식이 true이면
해당 괄호안의 loop문을 수행하게 된다.
do.. while 문은 do { } while (조건식) 처럼 사용할 수 있는데,
while과의 차이점은 적어도 한 번은 실행한다는 것이다.
break는 멈추고 빠져나오는,
continue는 멈추고 다음 반복으로 진행하는
키워드로 반복문 안에서 사용할 수 있다.
for(let i=0; i<10; i++){
// 코드~~
}
let i=0;
while(i<10){
// 코드~~
i++;
}
do {
// 코드~~
} while(조건식)
❗Tip
- 명확한 횟수가 정해져있다면 for문을,
그게 아니라면 while문을 주로 사용
화이팅 💪
'개발(dev) > js' 카테고리의 다른 글
[javascript] 클로저 (Closure) (0) | 2023.05.07 |
---|---|
[js] javascript 중급 (1) (0) | 2023.01.22 |
[js] javascript 기초 (2) (0) | 2023.01.21 |
JavaScript 공부. 01 (0) | 2021.09.29 |