자바스크립트의 모든 값을 특정한 데이터 타입을 가짐
크게 원시타입(Primitive type) 과 참조 타입(Reference type)으로 분류됨
Angel
/ 1004 => NaN논리적 참 거짓을 나타내는 타입
true / false로 표현
조건문 또는 반복문에서 유용하게 사용
자동형변환 정리
두 피연산자가 같은 값으로 평가되는지 비교 후 불리언 값을 반환
비교할 때 암묵적 타입변환을 통해 타입을 일치시킨 후 같은 값인지 비교
두 피연산자가 모두 객체일 경우 메모리의 같은 객체를 바라보는지 판별
예상치 못한 결과가 발생할 수 있으므로 특별한 경우를 제외하고는 사용하지 않음
null
와 undefined
가치 모두 잡기
if ( someObjectOrPrimitive == null ) {
// null을 확인하면 객체와 기본 요소에 대해 null과 undefined를 모두 포착 하지만 // 0 또는 빈 문자열 과 같은 다른 잘못된 값은 포착하지 않습니다 .
}
&&
: and 연산||
: or 연산!
: not 연산if, else if, else
{}
안에 작성{}
dksdp wkrtjdlet myString = ["t","e","s","t"] // "test" 로 바꿔서 해도 결과는 같음
for (let i in myString){
console.log(i) // 0 ,1, 2, 3이 찍힘 - 주의
}
// t e s t 가 출력되기 위해서는 밑의 for of 를 사용해야함
function isValid(password) {
return password.length >= 8
}
isValid("password")
const sub = function (num1, num2){
return num1 - num2
}
sub(7,2)
=
문자 뒤 기본 인자 선언 가능const greeting = function (nmae = 'noName'){
console.log(`hi ${name}`)
}
greeting
함수도 하나의 값으로 평가됨
선언식 함수와 표현식 함수 모두 타입은 funciton으로 동일
console.log(typeof 선언식) // function
console.log(typeof 표현식) // function
add(2,7) // 9
function add(num1, num2){
return num1 + num2
}
sub(7,2) // Uncaught ReferenceError : Cannot access 'sub' before initialization
//초기화 이전이라는 에러
const sub = function(num1, num2){
return num1 - num2
}
console.log(sub) // undefinedsub(7,2)
// Uncaught ReferenceError : sub is not a function
// undefined로 초기화되어 function이 아니라는 에러
var sub = function(num1, num2){
return num1 - num2
}
()
도 생략 가능{}
과 return 도 생략가능const arrow = function(name){ return `hello! ${name}`}// 1. function 키워드 삭제
const arrow = (name) => {return `hello! ${name}`}// 2. () 생략 - 매개변수가 하나일 때만
const arrow = name => {return `hello! ${name}`}// 3. {} & return 생략 (바디 표현식 1개인 경우만)
const arrow = name => `hello! ${name}`
키와 속성들을 담고 있는 참조 타입의 객체(object)
순서를 보장하는 특징이 있음
주로 대괄호를 이용하여 생성하고, 0을 포함한 양의 정수 인덱스로 특정 값에 접근 가능
배열의 길이는 array.length 형태로 접근 가능
//reverse
const numbers = [1,2,3,4,5]
numbers.reverse()
console.log(numbers) // [5,4,3,2,1]
// push & popconst numbers = [1,2,3,4,5]numbers.push(100)console.log(numbers) // [1,2,3,4,5,100]numbers.pop()console.log(numbers) // [1,2,3,4,5]// unshift & shiftconst numbers = [1,2,3,4,5]numbers.unshift(100)console.log(numbers) // [100,1,2,3,4,5]numbers.shift()console.log(numbers) // [1,2,3,4,5]// includesconst numbers = [1,2,3,4,5]console.log(numbers.includes(1)) // trueconsole.log(numbers.includes(100)) // false//indexOfconst numbers = [1,2,3,4,5]let result result = numbers.indexOf(3) // 2 특정값이 존재하는지 확인후 가장 첫번째 찾은 인덱스 반환result = numbers.indexOf(100) // -1 없을 경우 -1 반환//joinconst numbers = [1,2,3,4,5]let result result = numbers.join() // 1,2,3,4,5result = numbers.join("") // 12345result = numbers.join('-') //1-2-3-4-5
array.forEach((element, index, array) => { do something })
배열의 각 요소에 대해 콜백 함수를 한번씩 실행
콜백 함수는 3가지 매개변수로 구성
반환 값(return)이 없는 메서드임
const food = ["바나나", "사과", "파인에플"]
ssafy.forEach((food, index) => {
console.log(food, index)
//바나나 0
//사과 1
//파인에플 2
})
array.map((element, index, array) => { do something })
const numbers= [1,2,3,4,5]
const doubleNums = numbers.map((num) => {
return num *2
})
console.log(doubleNums) // [2,4,6,8,10]
const numbers=[1,2,3,4,5]
const oddNums = numbers.filter((num) => num%2)
console.log(oddNums) // 1,3,5
array.reduce((acc, element, index, array) => { do something }, initialValue)
배열의 각 요소에 대해 콜백 함수를 한번씩 실행
콜백 함수의 반환값들을 하나의 값으로 누적 후 반환
reduce 메서드의 주요 매개변수
빈 배열의 경우 initialValue를 제공하지 않으면 에러 발생
const numbers = [1,2,3]
const result = numbers.reduce((acc,num) => {
return acc+num
},0)
console.log(result) // 1+2+3 = 6
array.find((element, index, array) => { do something })
배열의 각 요소에 대해 콜백 함수를 한 번씩 실행
콜백 함수의 반환 값이 참이면 해당 요소를 반환
찾는 값이 배열에 없으면 undefined 반환
const avenger = [
{ name : 'Tony Stark', age: 45},
{ name : 'Steve Rogers', age: 32},
{ name : 'Thor', age: 40},
]
const result = avengers.find((avenger) => {
return avenger.name === 'Tony Stark'
})
console.log(result) // { name : 'Tony Stark', age: 45}
array.some((element, index, array) => { do something })
배열의 요소 중 하나라도 주어진 판별 함수를 통과하면 참을 반환
모든 요소가 통과하지 못하면 거짓 반환
빈 배열은 항상 거짓 반환
const numbers = [1,3,5,7,9]
const hasEvenNumber = numbers.some((num) => {
return num %2 === 0
})
console.log(hasEvenNumber) // false
const hasOddNumber = numbers.some((num) => {
return num %2
})
console.log(hasOddNumber) // true
array.every((element, index, array) => { do something })
배열의 모든 요소 판별 함수를 통과하면 참을 반환
모든 요소가 통과하지 못하면 거짓 반환
빈 배열은 항상 참 반환
const jsonData = JSON.stringify({
coffee : "Americano",
iceCream : 'Cookie and cream'
})
console.log(jsonData) // "{"coffee": "Americano" , ...}"
console.log(typeof jsonData) // string
const paredData = JSON.parse(jsonData)
console.log(parsedData) // {coffe: "Americano", ...}
console.log(typeof parsedData) // object