JS와 완전 초면은 아니지만, 그렇다고 친하다고 할 수도 없는 사람?
바로 나🙄...
천 리 길도 한 걸음부터 시작이랬다. 나중에 헷갈리지 않도록 기초도 차근차근 짚고 넘어가보자.
pizza-chicken
ice_cream_cake
custardCreamDonut
ChocolateCake
*camelCase와 비슷하지만 첫글자도 대문자로 작성한다는 점이 다르다
*1,2는 html / css 에서 주로 많이 사용되고
3,4는 JS(특히 new라는 생성자 함수를 사용할 때 특수하게 활용되기도 함)에서 주로 쓴다
*JS는 Zero-Based Numbering 이다. (사실 html / css 를 제외한 프로그래밍 언어들이 다 그런듯)
// 한 줄 메모
/* 한 줄 메모 */
/*
* 여러 줄
* 메모1
* 메모2
*/
크게 원시형(String, Number, boolean, Null, Undefined, Symbol, BigInt)과 참조형(배열, 객체)으로 나뉜다.
"data" // 쌍따옴표
'data' // 따옴표
`data` // 백틱
*백틱의 경우 보간법이라 해서 안쪽에 변수(${variableName})을 넣어줄 수 있다
(= 다른 데이터를 보간한다)
let number = 123; // 정수
let opacity = 1.57; // 부동소수점
// 숫자.toFixed(자릿수): 숫자를 고정 소수점 표기(자릿수)로 반환(문자)하기
// parseFloat(값): 주어진 값을 파싱해 부동소수점 실수로 반환(숫자)하기
const a = 0.1
const b = 0.2
a + b // 0.30000000000000004
parseFloat((a + b).toFixed(1)) // 0.3
숫자가 아닌 숫자를 나타낸다.
const num = 123
console.log(num + undefined) // NaN
let checked = true;
let isShow = false;
console.log(checked); // true
console.log(isShow); // false
let name;
console.log(typeof name); // undefined
*혹은 아예 존재하지 않는 데이터도 undefined를 뱉어낸다
undefined와 null의 차이
무엇인가 없다는 것을 의미하는 건 똑같지만 의도적(명시적)이냐 의도적이지 않느냐(암시적) 하는 차이가 있음 (null은 일부러 값을 넣어주지 않는한 자연적으로 생기지 않음)
// n 붙이기
console.log(1234567890123456789012345678901234567890n)
// BigInt()로 호출하기
console.log(BigInt('1234567890123456789012345678901234567890'))
let user = {
// Key: Value,
name: 'BAE',
age: 18,
isValid: true
};
console.log(user.name); // BAE
console.log(user.age); // 17
console.log(user.isValid); // true
let dessert = ['Cold dessert', 'Hot dessert', 'Frozen dessert'];
console.log(dessert[0]); // Cold dessert
console.log(dessert[1]); // Hot dessert
console.log(dessert[2]); // Frozen dessert
const a = 8;
console.log(a); // 8
a = 10;
console.log(a); // TypeError: Assignment to constant variable.
const, let 키워드를 사용해서 변수를 생성한다. var도 사용할 수 있으나 모던자바스크립트에서는 사용하지 않는 유물 같은것... 과거의 코드에서 자주 마주칠 수 있다.
대부분의 경우 const를 사용, 값을 재할당 해야하는 변수일 경우 let으로 바꿔서 사용한다.
const, let과 var의 가장 큰 차이점(scope)은 함수 레벨 유효범위(var)와 블록 레벨 유효범위(const, let)를 갖는다는 것. 때문에 호이스팅(Hoisting)에 주의해야함.
| const | let | var |
|---|---|---|
| 블록 레벨 유효범위(Block-level scope) | 블록 레벨 유효범위(Block-level scope) | 함수 레벨 유효범위(Function-level scope) |
| 재할당 X | 재할당 O | 재할당 O |
| 중복 선언 X | 중복 선언 X | 중복 선언 O |
| 호이스팅 X | 호이스팅 X | 호이스팅 O |
| 전역 선언시 전역 객체의 속성으로 등록 X | 전역 선언시 전역 객체의 속성으로 등록 X | 전역 선언시 전역 객체의 속성으로 등록 O |
const 는 값(데이터)의 재할당이 불가하고,
let 은 값(데이터)의 재할당이 가능, 변수 선언도 가능하다. 재할당하면 TypeError가 뜨는 것을 볼 수 있다.
변수명은 $, _ 로 시작할 수도 있다.
변수명에 -(하이픈)이 포함되어서는 안된다.
숫자로 시작해도 안된다.
몇몇 특수한 경우를 제외하면 camelCase나 _(언더스코어)를 사용한다.
같은 상수(const)지만(최초 할당 이후 변하지 않으므로), 대문자만으로 변수명을 구성하는 경우가 있다. 대문자 상수는 '하드 코딩'한 값의 별칭을 만들 때 주로 사용된다. 예)const COLOR_ORANGE = "#FF7F00";
변수명은 변수가 담고 있는 것이 무엇인지 쉽게 알 수 있도록 지어야 한다.
abstract arguments boolean break byte case
catch char class continue debugger default
package short this try void synchronized...
https://ko.javascript.info/ → 매우많은도움!
패스트캠퍼스 박영웅 강사님 강의