์ฝ๋ ์์ฑ๋ฒ
์ธ๋ฏธ์ฝ๋ก (semicolon)
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ธ๋ฏธ์ฝ๋ก ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉ
- ์ธ๋ฏธ์ฝ๋ก ์ด ์์ผ๋ฉด ASI(Automatic Semicolon Insertion, ์๋ ์ธ๋ฏธ์ฝ๋ก ์ฝ์ ๊ท์น)์ ์ํด ์๋์ผ๋ก ์ธ๋ฏธ์ฝ๋ก ์ฝ์ ๋จ
๋ค์ฌ์ฐ๊ธฐ์ ์ฝ๋๋ธ๋ญ
- 2์นธ ๋ค์ฌ์ฐ๊ธฐ ์ฌ์ฉ
- ๋ธ๋ญ(block)์ it, for ํจ์์์ ์ค๊ดํธ { } ๋ด๋ถ๋ฅผ ๋งํจ
- ์ค๊ดํธ { }๋ฅผ ์ฌ์ฉํด ์ฝ๋ ๋ธ๋ญ ๊ตฌ๋ถ
์ฝ๋ ์คํ์ผ ๊ฐ์ด๋
- ์ฝ๋ฉ ์คํ์ผ์ ํต์ฌ์ ํฉ์๋ ์์น๊ณผ ์ผ๊ด์ฑ
- ์ฝ๋์ ํ์ง์ ์ง๊ฒฐ๋๋ ์ค์ํ ์์
- ์ฝ๋์ ๊ฐ๋ ์ฑ, ์ ์ง๋ณด์ ๋๋ ํ์๊ณผ์ ์ปค๋ฎค๋์ผ์ด์ ๋ฑ ๊ฐ๋ฐ ๊ณผ์ ์ ์ฒด์ ์ํฅ
์ฃผ์
ํ์ค ์ฃผ์ //
์ฌ๋ฌ์ค ์ฃผ์ /* */
๋ณ์์ ์๋ณ์
์๋ณ์ ์ ์์ ํน์ง
- ์๋ณ์(identifier)๋ ๋ณ์๋ฅผ ๊ตฌ๋ถํ ์ ์๋ ๋ณ์๋ช ์ ๋งํจ
- ์๋ณ์๋ ๋ฐ๋์ ๋ฌธ์, ๋ฌ๋ฌ($) ๋๋ ๋ฐ์ค(_)๋ก ์์
- ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ฉฐ, ํด๋์ค๋ช ์ธ์๋ ๋ชจ๋ ์๋ฌธ์๋ก ์์
- ์์ฝ์ด ์ฌ์ฉ ๋ถ๊ฐ๋ฅ
- ์์ฝ์ด ์์ : for, if, function ๋ฑ
- ์นด๋ฉ ์ผ์ด์ค (camelCase, lower-camel-case)
- ๋ณ์, ๊ฐ์ฒด, ํจ์์ ์ฌ์ฉ
// ๋ณ์
let dog
let variableName
// ๊ฐ์ฒด
const userInfo = { name:'Tom', age:20 }
// ํจ์
function add() {}
function getName() {}
- ํ์ค์นผ ์ผ์ด์ค (PascalCase, upper-camel-case)
- ํด๋์ค, ์์ฑ์์ ์ฌ์ฉ
// ํด๋์ค
class User{
constructor(options) {
this.name = options.name
}
}
// ์์ฑ์ ํจ์
function User(options) {
this.name = options.name
}
- ๋๋ฌธ์ ์ค๋ค์ดํฌ ์ผ์ด์ค(SNAKE_CASE)
- ์์(constants)์ ์ฌ์ฉ
- ์์ : ๊ฐ๋ฐ์์ ์๋์ ์๊ด์์ด ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฐ์ ์๋ฏธ
// ๊ฐ์ด ๋ฐ๋์ง ์์ ์์
const API_KEY = 'my-key'
const PI = Math.PI
// ์ฌํ ๋น์ด ์ผ์ด๋์ง ์๋ ๋ณ์
const NUMBERS = [1, 2, 3]
๋ณ์ ์ ์ธ ํค์๋
let foo // ์ ์ธ
console.log(foo) // undefined
foo = 11 // ํ ๋น
console.log(foo) // 11
let bar = 0 // ์ ์ธ + ํ ๋น
console.log(bar) // 0
Python๊ณผ ๋ค๋ฅด๊ฒ JavaScript๋ ๋ณ์๋ฅผ ์ ์ธํ๋ ํค์๋๊ฐ ์ ํด์ ธ ์์
let
- ๋ธ๋ก ์ค์ฝํ ์ง์ญ ๋ณ์๋ฅผ ์ ์ธ (์ถ๊ฐ๋ก ๋์์ ๊ฐ์ ์ด๊ธฐํ)
- const
- ๋ธ๋ก ์ค์ฝํ ์ฝ๊ธฐ ์ ์ฉ ์์๋ฅผ ์ ์ธ (์ถ๊ฐ๋ก ๋์์ ๊ฐ์ ์ด๊ธฐํ)
- var
- ๋ณ์๋ฅผ ์ ์ธ (์ถ๊ฐ๋ก ๋์์ ๊ฐ์ ์ด๊ธฐํ)
[์ฐธ๊ณ ]
์ ์ธ, ํ ๋น, ์ด๊ธฐํ
- ์ ์ธ (Declaration)
- ๋ณ์๋ฅผ ์์ฑํ๋ ํ์ ๋๋ ์์
- ํ ๋น (Assignment)
- ์ ์ธ๋ ๋ณ์์ ๊ฐ์ ์ ์ฅํ๋ ํ์ ๋๋ ์์
- ์ด๊ธฐํ (Initialization)
- ์ ์ธ๋ ๋ณ์์ ์ฒ์์ผ๋ก ๊ฐ์ ์ ์ฅํ๋ ํ์ ๋๋ ์์
๋ธ๋ก์ค์ฝํ(block scope)
- if, for, ํจ์ ๋ฑ์ ์ค๊ดํธ ๋ด๋ถ๋ฅผ ๊ฐ๋ฆฌํด
- ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ ๋ณ์๋ ๋ธ๋ก ๋ฐ๊นฅ์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅ
let x = 1
if (x===1) {
let x = 2
console.log(x) // 2
}
console.log(x) // 1
๋ณ์ ์ ์ธ ํค์๋ - let
let number = 10 // 1. ์ ์ธ ๋ฐ ์ด๊ธฐ๊ฐ ํ ๋น
number = 20 // 2. ์ฌํ ๋น
let number = 10 // 1. ์ ์ธ ๋ฐ ์ด๊ธฐ๊ฐ ํ ๋น
let number = 20 // 2. ์ฌ์ ์ธ ๋ถ๊ฐ๋ฅ
- ์ฌํ ๋น ๊ฐ๋ฅ & ์ฌ์ ์ธ ๋ถ๊ฐ๋ฅ
- ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ๋ ์ง์ญ ๋ณ์๋ฅผ ์ ์ธ, ์ ์ธ๊ณผ ๋์์ ์ํ๋ ๊ฐ์ผ๋ก ์ด๊ธฐํ ํ ์ ์์
๋ณ์ ์ ์ธ ํค์๋ - const
const number = 10 // 1. ์ ์ธ ๋ฐ ์ด๊ธฐ๊ฐ ํ ๋น
number = 10 // 2. ์ฌํ ๋น ๋ถ๊ฐ๋ฅ
const number = 10 // 1. ์ ์ธ ๋ฐ ์ด๊ธฐ๊ฐ ํ ๋น
const numbet = 20 // 2. ์ฌ์ ์ธ ๋ถ๊ฐ๋ฅ
- ์ฌํ ๋น ๋ถ๊ฐ๋ฅ & ์ฌ์ ์ธ ๋ถ๊ฐ๋ฅ (์ฝ๊ธฐ ์ ์ฉ)
- ์ ์ธ ์ ๋ฐ๋์ ์ด๊ธฐ๊ฐ์ ์ค์ ํด์ผ ํ๋ฉฐ, ์ดํ ๊ฐ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅ
- let๊ณผ ๋์ผํ๊ฒ ๋ธ๋ก์ค์ฝํ๋ฅผ ๊ฐ์ง
๋ณ์ ์ ์ธ ํค์๋ - var
- ์ฌํ ๋น ๊ฐ๋ฅ & ์ฌ์ ์ธ ๊ฐ๋ฅ
- ES6 ์ด์ ์ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ๋๋ ํค์๋
- “ํธ์ด์คํ
”๋๋ ํน์ฑ์ผ๋ก ์ธํด ์๊ธฐ์น ๋ชปํ ๋ฌธ์ ๋ฐ์๊ฐ๋ฅ
- ๋ฐ๋ผ์ ES6์ดํ๋ถํฐ๋ var๋์ const์ let์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅ
- ํจ์ ์ค์ฝํ(function scope)๋ฅผ ๊ฐ์ง
[์ฐธ๊ณ ]
ํจ์ ์ค์ฝํ (finction scope)
- ํจ์์ ์ค๊ดํธ ๋ด๋ถ๋ฅผ ๊ฐ๋ฆฌํด
- ํจ์ ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ ๋ณ์๋ ํจ์ ๋ฐ๊นฅ์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅ
function foo() {
var x = 5
console.log(x) // 5
}
// Reference Error : x is nor defined
console.log(x)
ํธ์ด์คํ (hoisting)
- ๋ณ์ ์ ์ธ ์ด์ ์ ์ฐธ์กฐํ ์ ์๋ ํ์
- var๋ก ์ ์ธ๋ ๋ณ์๋ ์ ์ธ ์ด์ ์ ์ฐธ์กฐํ ์ ์์ผ๋ฉฐ, ์ด๋ฌํ ํ์์ ํธ์ด์คํ ์ด๋ผ ํจ
- ๋ณ์ ์ ์ธ ์ด์ ์ ์์น์์ ์ ๊ทผ ์ undefinde๋ฅผ ๋ฐํ
- JavaScript์์ ๋ณ์๋ค์ ์ค์ ์คํ์์ ์ฝ๋์ ์ต์๋จ์ผ๋ก ๋์ด ์ฌ๋ ค์ง๊ฒ ๋๋ฉฐ ์ด๋ฌํ ์ด์ ๋๋ฌธ์ var๋ก ์ ์ธ๋ ๋ณ์๋ ์ ์ธ ์์ undefined๋ก ๊ฐ์ด ์ด๊ธฐํ ๋๋ ๊ณผ์ ์ด ๋์์ ์ผ์ด๋จ
- ๋ฐ๋ฉด let, const๋ ํธ์ด์คํ ์ด ์ผ์ด๋๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์ํด
console.log(username) // undefined
var username = 'ํ๊ธธ๋'
console.log(email) // Uncaught ReferenceError
let email = 'name@gmail.com'
console.log(age) // Uncaught ReferenceError
const age = 50
- ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๊ฒ์ ์ฝ๋์ ๋
ผ๋ฆฌ์ ์ธ ํ๋ฆ์ ๊นจ๋จ๋ฆฌ๋ ํ์์ด๋ฉฐ ์ด๋ฌํ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด let, const๊ฐ ์ถ๊ฐ๋์์
- ์ฆ var๋ ์ฌ์ฉํ์ง ์์์ผ ํ๋ ํค์๋
- ๋ค๋ง, ์์ง๊น์ง๋ ๋ง์ ๊ธฐ์กด์ JavaScript ์ฝ๋๋ ES6์ด์ ์ ๋ฌธ๋ฒ์ผ๋ก ์์ฑ๋์ด ์์ผ๋ฏ๋ก ํธ์ด์คํ ์ ๋ํ ์ดํด๊ฐ ํ์
ํค์๋ | ์ฌ์ ์ธ | ์ฌํ ๋น | ์ค์ฝํ | ๋น๊ณ |
let | X | O | ๋ธ๋ก ์ค์ฝํ | ES6๋ถํฐ ๋์ |
const | X | X | ๋ธ๋ก ์ค์ฝํ | ES6๋ถํฐ ๋์ |
var | O | O | ํจ์ ์ค์ฝํ | ์ฌ์ฉ X |
- ์ด๋์ ๋ณ์๋ฅผ ์ฐ๊ณ ์์๋ฅผ ์ธ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ํ๋ก๊ทธ๋๋จธ์ ๋ชซ
- Airbnb ์คํ์ผ ๊ฐ์ด๋์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก const ์ฌ์ฉ์ ๊ถ์ฅ
- ์ฌํ ๋นํด์ผ ํ๋ ๊ฒฝ์ฐ๋ง let
- ๋ค๋ง, ์ค์ต์์๋ ํธ์๋ฅผ ์ํด ์ฌํ ๋น์ด ๊ฐ๋ฅํ let์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํด๋ ๋จ
๋ฐ์ดํฐ ํ์
- JavaScript์ ๋ชจ๋ ๊ฐ์ ํน์ ํ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ง
- ํฌ๊ฒ ์์ ํ์ (Primitive type)๊ณผ ์ฐธ์กฐ ํ์ (Reference type)์ผ๋ก ๋ถ๋ฅ๋จ
Number
์ ์ ๋๋ ์ค์ํ ์ซ์๋ฅผ ํํํ๋ ์๋ฃํ
const a = 13
const b = -5
const c = 3.14 // float ์ซ์ํํ
const d = 2.998e8 // 2.998 * 10^8 = 299,800,000
const e = Infinity
const f = -Infinity
const g = NaN // Not a Number๋ฅผ ๋ํ๋ด๋ ๊ฐ
NaN
- Not-A-Number(์ซ์๊ฐ ์๋)๋ฅผ ๋ํ๋
- Number.isNaN()์ ๊ฒฝ์ฐ ์ฃผ์ด์ง ๊ฐ์ ์ ํ์ด Number์ด๊ณ ๊ฐ์ด NaN์ด๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฐํ
NaN์ ๋ฐํํ๋ ๊ฒฝ์ฐ
- ์ซ์๋ก์ ์ฝ์ ์ ์์ (parseInt(”์ด์ฉ๊ตฌ”), Number(underfined))
- ๊ฒฐ๊ณผ๊ฐ ํ์์ธ ์ํ ๊ณ์ฐ์ (Math.sqrt(-1))
- ํผ์ฐ์ฐ์๊ฐ NaN (7**NaN)
- ์ ์ํ ์ ์๋ ๊ณ์ฐ์ (0*Infinity)
- ๋ฌธ์์ด์ ํฌํจํ๋ฉด์ ๋ง์ ์ด ์๋ ๊ณ์ฐ์ (”๊ฐ”/3)
String
- ๋ฌธ์์ด์ ํํํ๋ ์๋ฃํ
- ์์ ๋ฐ์ดํ ๋๋ ํฐ ๋ฐ์ดํ ๋ชจ๋ ๊ฐ๋ฅ
const sentence1 = 'single quote' // single quote
const sentence2 = "double quote" // double quote
console.log(sentence1)
console.log(sentence2)
- ๊ณฑ์ , ๋๋์ , ๋บ์ ์ ์๋์ง๋ง ๋ง์ ์ ํตํด ๋ฌธ์์ด์ ๋ถ์ผ ์ ์์
const firstName = 'firstName'
const lastName = 'lastName'
const fullName = firstName + lastName
console.log(fullName)
- Quote๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ธ ์ ์ค ๋ฐ๊ฟ์ด ์๋จ
- ๋์ escape sequence๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ \n๋ฅผ ์ฌ์ฉํด์ผ ํจ
// Bad
const word = "์๋
ํ์ธ์" // Uncaught SyntaxError: Invalid or unexpected token
// Good
const word1 = "์๋
\nํ์ธ์"
console.log(word1)
- Template Literal ์ ์ฌ์ฉํ๋ฉด ์ค๋ฐ๊ฟ์ด ๋๋ฉฐ, ๋ฌธ์์ด ์ฌ์ด์ ๋ณ์๋ ์ฝ์ ๋ ๊ฐ๋ฅ
(๋จ, escape sequence๋ฅผ ์ฌ์ฉํ ์ ์๋ค) == Python์ “f-string”
const word2 = `์๋
๋ค ํ์ธ์`
console.log(word2)
const age = 10
const message = `ํ๊ธธ๋์ ${age}์ธ ์
๋๋ค.`
console.log(message)
Template literals (ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด)
- ๋ด์ฅ๋ ํํ์์ ํ์ฉํ๋ ๋ฌธ์์ด ์์ฑ ๋ฐฉ์
- ES6+๋ถํฐ ์ง์
- Backtick(’ ‘)์ ์ด์ฉํ๋ฉฐ, ์ฌ๋ฌ ์ค์ ๊ฑธ์ณ ๋ฌธ์์ด์ ์ ์ํ ์๋ ์๊ณ JavaScript์ ๋ณ์๋ฅผ ๋ฌธ์์ด์์ ๋ฐ๋ก ์ฐ๊ฒฐํ ์ ์๋ ์ด์ ์ด ์๊น
- ํํ์์ ๋ฃ์ ์ ์๋๋ฐ, ์ด๋ $์ ์ค๊ดํธ($ {expression}) ๋ก ํ๊ธฐ
const age = 10
const message = `ํ๊ธธ๋์ ${age}์ธ ์
๋๋ค.`
Empty Value
- ๊ฐ์ด ์กด์ฌํ์ง ์์์ ํํํ๋ ๊ฐ์ผ๋ก JavaScript์์๋ null๊ณผ undefinde๊ฐ ์กด์ฌ
- ๋์ผํ ์ญํ ์ ํ๋ ์ด ๋๊ฐ์ ํค์๋๊ฐ ์กด์ฌํ๋ ์ด์ ๋ ๋จ์ํ JavaScript์ ์ค๊ณ ์ค์
- ํฐ ์ฐจ์ด๋ฅผ ๋์ง ๋ง๊ณ interchangeableํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ถ์ฅํจ
nulll
- null ๊ฐ์ ๋ํ๋ด๋ ํน๋ณํ ํค์๋
- ๋ณ์์ ๊ฐ์ด ์์์ ์๋์ ์ผ๋ก ํํํ ๋ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํ์
let lastName = null
console.log(lastName) // null - ์๋์ ์ผ๋ก ๊ฐ์ด ์์์ ํํํจ
undefined
- ๊ฐ์ด ์ ์๋์ด ์์ง ์์์ ํํํ๋ ๊ฐ
- ๋ณ์ ์ ์ธ ์ดํ ์ง์ ๊ฐ์ ํ ๋นํ์ง ์์ผ๋ฉด ์๋์ผ๋ก ํ ๋น๋จ
let firstName // ์ ์ธ๋ง ํ๊ณ ํ ๋นํ์ง ์์
console.log(firstName) // undefined
null๊ณผ undefinde
- null๊ณผ undefinde์ ๊ฐ์ฅ ๋ํ์ ์ธ ์ฐจ์ด์ ์ typeof ์ฐ์ฐ์๋ฅผ ํ์ ์ ํ์ธํ์ ๋ ๋ํ๋จ
typeof null // "object"
typeof undefined // "undefined"
- null์ด ์์ ํ์ ์์๋ ๋ถ๊ตฌํ๊ณ object๋ก ์ถ๋ ฅ๋๋ ์ด์ ๋ JavaScript ์ค๊ณ ๋น์์ ๋ฒ๊ทธ๋ฅผ ์ง๊ธ๊น์ง ํด๊ฒฐํ๊ธฐ ๋ชปํ ๊ฒ
- ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ์ด์ ๋ ์ด๋ฏธ nullํ์ ์ ์์กด์ฑ์ ๋๊ณ ์๋ ๋ง์ ํ๋กใ ก๋จ๋ค์ด ๋ง๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ (ํ์ ํธํ ์ ์ง)
Boolean
- true์ false
- ์ฐธ๊ณผ ๊ฑฐ์ง์ ํํํ๋ ๊ฐ
- ์กฐ๊ฑด๋ฌธ ๋๋ ๋ฐ๋ณต๋ฌธ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ
- ์กฐ๊ฑด๋ฌธ ๋๋ ๋ฐ๋ณต๋ฌธ์์ boolean์ด ์๋ ๋ฐ์ดํฐ ํ์ ์ ์๋ ํ๋ณํ ๊ท์น์ ๋ฐ๋ผ true๋๋ false๋ก ๋ณํ๋จ
ToBoolean Conversions (์๋ ํ๋ณํ)
๋ฐ์ดํฐ ํ์ | false | true |
undefined | ํญ์ ๊ฑฐ์ง | X |
null | ํญ์ ๊ฑฐ์ง | X |
Number | 0, -0, NaN | ๋๋จธ์ง ๋ชจ๋ ๊ฒฝ์ฐ |
String | ๋น ๋ฌธ์์ด | ๋๋จธ์ง ๋ชจ๋ ๊ฒฝ์ฐ |
Object | X | ํญ์ ์ฐธ |
'๐ถ Programming > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3. ์ฐ์ฐ์ (0) | 2022.11.13 |
---|---|
1. JavaScript ์์ํ๊ธฐ (0) | 2022.11.06 |