TIL 25 / 26일차

minjun kim·2024년 10월 24일
0

1. 변수 실습

function scopeTest () {
    var a = 10;
    if (true) {
        let b = 20;
        const c = 30;
    }
    // let 하고 const는 블록스코프를 갖기 때문에
    // 외부에서 접근하면 b와 c에는 접근할 수 없다. 

    console.log(a); // 출력 : 10
    console.log(b); // 출력 ?
    console.log(c); // 출력 ?
}
scopeTest();

변수를 사용할 때는 const를 사용하고
재할당이 필요할 때는 let을 사용하자


2. 호이스팅

var myVar;

console.log(myVar);

var myVar = 10;

var는 어차피 쓰지 않으니 중요하지 않지만
이렇게 사용했을 때도 undefined가 출력된다.


3. 데이터타입

그냥 우리가 typeof를 이용해 데이터의 타입을 확인할 수 있다.
거의 typeof를 써서 무언갈 만들일은 없기 때문에
이 정도 쓸 수만 있다고 사용하기

참조 타입

객체 , 배열이 같다라고 표현했을 때
false가 나온다면 그 데이터주소가 다르기 때문에 같지 않은 것이다.

오브젝트를 만들고 싶은데 같은 객체로 만들고 싶지 않을 때 사용법

let obj1 = {name:"John"};
let obj2 = {name:obj1.name};
obj1 === obj2 => false

obj1 = {...obj2}
obj1 === obj2 와도 같다

그렇다면 배열을 어떻게?

let arr1 = [1,2,3];
let arr2 = [...arr1];

4. 연산자실습

== 타입 추론을 자기마음대로 해서 비교를 한다.
그래서 10 == '10' 을 해도 true가 나온다.

=== 비교를 할 때 각각 변수의 타입까지 신경쓴다.

let x = 10;
x += 5; // x = x + 5 -> 15
x -= 3; // x = x - 3 -> 12
x *= 2; // x = x * 2 -> 24
x /= 6; // x = x / 6 -> 4
console.log(x);

이런식으로 += 는 풀어서 사용하면 우측과 같다
이는 읽을 줄만 알면 된다.

let count = 0;
console.log(count++);
console.log(count++);
console.log(count--);
console.log(++count);
console.log(--count);
console.log(count);

전위 후위라고 count 앞에 ++ 와 뒤에 ++ 는 차이가 있는데
뒤에 ++ -- 가 붙으면 후위라 나중에 더하기가 된다.

console.log(true && false); // false
console.log(true || false); // true
console.log(!false);    // true
console.log(5 > 3 && 10 < 20); // true
console.log(5 > 3 || 10 > 20); // true

|| 는 둘 중 하나만 truetrue
&&는 왼쪽과 오른쪽이 맞지 않으면 false

let num = 10;
let result = (num % 2) ? "짝수" : "홀수";
console.log(result);

? 전이 조건인것 후가 true면 : false면;

=== 의 반대는 !==

console.log("5" + 3); 
console.log('5' - 3);
console.log(true + 1);
console.log(false + 1);
console.log('5' * '2');

문자열과 숫자는 더해도 JS는 멋대로 더한다
그러니 숫자는 숫자끼리 문자열은 문자열끼리 합치는 작업을 해줘야 함.


함수 실습

두수의 합 함수 - 함수 선언식

function add (a,b) {
    return a+b;
};
console.log(add(3,5));

두수의 차 함수 - 함수 표현식

const subtractFunction = function subtract (a,b) {
    return a+b;
};

두수의 곱 함수 - 화살표 함수

const multiply = (number1, number2) => {
    return number1 * number2;
}

화살표 함수 1줄에 return 한줄이 있을 때 아래처럼 줄일 수 있다.
근데 원래 의도했던 함수를 return 안하려고 했다면 아래처럼쓰면 결과가 달라질 수 있다.
(꼭 return 하는 경우에만 1줄 표현으로 줄일 때 아래처럼 표현하기)
const multiply = (number1, number2) => number1 * number2;

세 가지의 함수 모두 사용해도 상관없고 표현식은 잘 안쓰고 일반식과
화살표 함수를 2가지 번갈아가며 사용하고,

그러나 모두 함수라는걸 인지할 수 있게 읽을 수 있어야 한다.

아래는 즉시실행 함수다.

(function add(number1, number1) {
    return number1 + number2;
})(5, 8)

저 아래 5,8이 매개변수를 넣어주는 자리고
얘는 켜지자마자 바로 실행되는 즉시실행 함수다.

기본 매개변수를 설정하는 함수

function nameWrite(name = '이강민') {
    console.log(`안녕 난 ${name} 이야`);
}
nameWrite();

매개변수name에 기본값을 설정한 형태
그래서 값이 없을 때 기본값이 console에 출력된다.

function add(number1, number2 = 0){
    console.log(number1 + number2);
}

add(5,10);

add(8);

add(8)처럼 추가했을 경우
기본 매개변수는 오른쪽 맨 끝에서부터 채워줘야 한다 그래서
number2 = 0을 먼저 설정해주었다.

그러나 기본 매개변수를 설정하는게 프로그래밍에 좋은 구조는 아니다.

왜냐면 내가

function add(number1, number2 = 0, name){
    console.log(number1 + number2);
}

이라는 완전 다른형태의 매개변수를 추가 했을 때
name을 맨 앞에 옮기면 또 값을 줄 때
name값을 또 앞에 추가해야되기 때문에 복잡해진다.


조건문

switch는 라는 조건문도 있지만 일반적으로 if - else if로 조건문을 만든다.


반복문

const fruits = ['apple','banana','grape'];
                  0        1       2
for (let i = 0; i <= fruits.length - 1; i ++) {
    console.log(fruits[i]);
}

이렇게 length -1을 써서 어디서 끝날 건지를 확인해줘야 함
배열의 첫번째 부터 끝까지 다 접근하고 싶을 때

for (let i = 20; i > 0; i--) {
    console.log(i);
} 

거꾸로 숫자를 세는 방법
반복문이 항상 0일 필요 없고 length일 필요 없고 숫자일 수도 있다.
i가 항상 작은 값이 아니여도 된다.

0개의 댓글

관련 채용 정보