let x = 10; // 함수 밖에서 선언
function printX(){
console.log(x); // 10
}
console.log(x)
printX();
function printY(){
let y = 10; // 함수 안에서 선언
console.log(y); //정상 작동
}
console.log(y) //함수 외부 error
printY();
ES6 신문법임!
let arrowFunc01 = (x,y) => {
return x+y
}
function testFunc(x){
return x;
}
let arrowFunc02 = (x,y) => x + y //함수 내부 로직이 한 줄 일 때만 사용 가능
let arrowFunc03 = x => x //매개변수가 1개이고 내부 로직이 한 줄이면 괄호도 생략 가능.
let x = 5;
if (x < 10){
console.log('x는 10보다 작습니다.') // x는 10보다 작습니다.
}
ex) y의 길이가 5보다 크거나 같으면 길이를 반환해주자.
let y = 'hello world';
if (y.length >=5){
console.log(y.length); // 11
}
let x = 10;
if (x>0) { //조 건에 부합하면
console.log('x는 양수입니다')
} else{ // 그렇지 않으면
console.log('x는 음수입니다')
}
let x = 10;
if(x<0){
console.log('1')
}else if(x>=0 && x<10){ // 논리곱. 두 개 다 만족할 시.
console.log('2')
}else {
console.log('3')
}
default => if 문의 else 같은 기능
break문이나 continue 꼭 쓰기!
let fruit = '바나나';
switch(fruit){
case "사과":
console.log('사과')
break;
case "포도":
console.log('포도')
break;
case "배":
console.log('배')
break;
default:
console.log('아무것도 아닙니다.') //아무것도 아닙니다
break;
}
let age = 20;
let gender = '여성';
미성년자 구분
if(age >= 18){ //18세 이상 조건 만족 시
if(gender === '여성'){
console.log('성인 여성입니다')
} else {
console.log('성인 남성입니다')
}
} else { // 18세 이상 조건 불만족 시
if (gender === '여성'){
console.log('미성년 여성입니다')
} else{
console.log('미성년 남성입니다')
}
}
and(&&) 조건
let x = 10;
x > 0 && console.log('x는 양수입니다.') //앞 조건이 만족이 되면 뒷문장 실행
or (||)조건
let y; // undefined
let z = y || 20; // y가 undefined이면 20으로 할당
console.log(z);
명시적으로 true/false는 아니지만 조건식에서 true/false로 간주되는 결과가 나오는 값들.
falsy
, false (논리적 거짓)
, 0
, 문자열
, null
, undefined
, NaN
truthy
, true (논리적 참)
, 0을 제외한 모든 숫자
, 빈 문자열을 제외한 모든 문자열
, 모든 객체
, 배열과 같은 자료구조
, 함수
하나의 변수에 여러개의 값을 넣을 수 있음
let person = {
name : '홍길동',
age : 20
gender: '남자'
};
function person(name, age, gender){
this.name = name;
this.age = age;
this.gender = gender;
}
let person1 = new person("홍길순", 30, '여자');
let person2 = new person("홍길동", 20, '남자');
// 객체접근방법
console.log(person2.name); // 홍길동
let person = {
name : '홍길동',
age : 20,
gender: '남자'
};
let keys = Object.keys(person);
console.log(keys); // [ 'name', 'age', 'gender' ]
let values = Object.values(person);
console.log(values); //[ '홍길동', 20, '남자' ]
let entries = Object.entries(person);
console.log(entries); //[ [ 'name', '홍길동' ], [ 'age', 20 ], [ 'gender', '남자' ] ]
let newPerson = {};
Object.assign(newPerson, person, {age:31}); // {}안에 있는 값을 기존값에서 {}내용으로 바꿔줘
console.log(newPerson); // { name: '홍길동', age: 31, gender: '남자' }
객체는 내용이 같아도 같지 않기 때문에 JSON.stringify() 함수를 사용하여 객체를 문자열로 변환한 후, 문자열로 변경하면 같게 됨.
##### 객체 병합 (...)
let person1 = {
name: "홍길동",
age: 30
};
let person2 = {
gender: "남자"
};
let mergedPerson = {...person1, ...person2};
console.log(mergedPerson); // { name: "홍길동", age: 30, gender: "남자" }
let number = [5, 4, 2, 3, 1];
let number1 = new Array(5);
console.log(number1); // [ <5 empty items> ]
console.log(number1.length); // 5
console.log(fruits[2]); //오렌지
let fruits = ['사과', '바나나', '오렌지'];
fruits.push("포도");
console.log(fruits); // ['사과', '바나나', '오렌지', '포도']
let fruits = ['사과', '바나나', '오렌지'];
console.log(fruits);
fruits.pop();
console.log(fruits); // ['사과', '바나나']
let fruits = ['사과', '바나나', '오렌지'];
fruits.shift();
console.log(fruits); //['바나나', '오렌지'];
let fruits = ['사과', '바나나', '오렌지'];
fruits.unshift('포도');
console.log(fruits); //['포도', '사과', '바나나', '오렌지']
let fruits = ['사과', '바나나', '오렌지'];
fruits.splice(1, 1, "포도");
console.log(fruits); //['사과', '포도', '오렌지']
let fruits = ['사과', '바나나', '오렌지'];
let slicedFruits = fruits.slice(1, 2);
console.log(slicedFruits); // ['바나나']
let numbers = [2, 4, 3, 1, 5];
numbers.forEach(function(item){
console.log(item) // 2 \ 4 \ 3 \ 1 \ 5
});
return이 있어야 함.
원본 배열의 길이만큼이 return.
let numbers = [2, 4, 3, 1, 5];
let newNumbers = numbers.map(function(item){
return item * 2;
});
console.log(newNumbers); //[ 4, 8, 6, 2, 10 ]
return이 있어야 함.
let numbers = [2, 4, 3, 1, 5] ;
let filteredNumbers = numbers.filter(function(item){
return item === 4;
});
console.log(filteredNumbers); // [ 4 ]
find : 조건 만족하는 것중 처음 요소만 찾아 줌.
let numbers = [2, 4, 3, 1, 5];
let resultNumbers = numbers.find(function(item){
return item > 3;
})
console.log(resultNumbers); // [4]
배열과 for문은 세트임
for(초기값; 조건식; 증감식)
for (i=0; i<10; i++){ //9까지 출력 되지만 10까지 증감하고 끝.
console.log(i);
}
const arr = ['일', '이', '삼', '사', '오'];
for (let i = 0; i < arr.length; i++){
console.log(i);
console.log(arr[i]);
}
ex) 0부터 10까지 수 중에서 2의 배수만 console.logfh 출력하는 예시
for (i=1; i<11; i++){
if(i % 2 === 0){
console.log(i);
}
}
let person = {
name : 'choi',
age : 27,
gender : 'male'
}
person[key]
for (let key in person){
console.log(key +' : '+ person[key]);
}
let i = 0;
while (i<10){
console.log(i)
i++;
}
ex) 3 초과 100미만 숫자 중 5의 배수인 것만 출력하는 문제
let i = 3;
while ( i<100){
if(i % 5 === 0){
console.log(i) // 5, 10, 15, ... , 95
}
i++;
}
let i = 0;
do {
console.log(i); // 0
i++;
} while(i>10)
for (let i = 0; i<=10; i++){
if (i === 5){
continue;
}
console.log(i); // 0, 1, 2, 3, 4, 6, 7, 8, 9, 10
}
for (let i = 0; i<=10; i++){
if (i === 5){
break;
}
console.log(i); // 0, 1, 2, 3, 4
}
남은 공부를 마저 하고 23시 40분 쯤 출간하기를 눌렀는데 velog 오류로 날아가버렸다.
산책 다녀와서 다시 작성하고 지금은 3시..
배운게 너무 많아 재미는 있는데 죽을 거 같다. 내용은 그럭저럭 이해가 되는데 숙제를 하나도 모르겠어서 멘붕이 왔다.
2배속으로 한 번, 정속으로 타이핑 하면서 두 번, 블로그 정리하면서 답만 내가 적어가며 세 번.
내일은 뭔가 숙제를 풀 수 있을 거 같은 느낌이 든다.. 나.. 성장했을지도.
내일은 약속이 있어 2주차 배속으로 듣고 개인과제 구상 정도만 해봐야겠다.