221004 TIL

김민승·2022년 10월 4일
0

TIL

목록 보기
16/24
post-thumbnail

변수선언

const // 참조 변경 불가. const 사용하도록 권장됨. 
//코드 리뷰하는동안 해당 변수가 변경됐을지 신경쓸 필요 없다
let // 변경 가능
var // 그냥 쓰지마시오. 

Boolean

            let one = true; // 다른 언어는 True인 경우도 있습니다.
            let two = false;
            let three;
            let four = null;
            let five = Infinity; // 비교

            console.log(Boolean("")); // false
            console.log(Boolean(" ")); // true
            console.log(Boolean("abc")); // true
            console.log(Boolean(0)); // false
            console.log(Boolean(100)); // true
            console.log(Boolean(-100)); // true
            console.log(Boolean(three)); // false
            console.log(Boolean(four)); // false
            console.log(Boolean(five)); // true
            one = 0;


JS의 아이러니.. 대혼란이 올 수 있다.
다른 언어에서는 [] {}는 false 로 나온다고 한다

비교연산자

견고한 코딩을 위해 등호 3개 사용하기

논리연산자

true : 1
false : 0
and(&&) : 곱
or(||) : 합
not(!) : 부정

[]이나 {}는 true값이다.

단락평가
username도 입력하고 pw도 입력해야만 회원가입 성공여부가 true, false 나오게 해주세요.
둘 중에 1개라도 입력이 안되면 false가 나와야 합니다.

            username = "";
            pw = "";
            회원가입성공여부 = username || "이름을 입력하지 않으신 분";

드모르간의 법칙

const x=0;
const y=1;

console.log(!(x || y)) === (!x && !y);
console.log(!(x && y)) === (!x || !y);

+연산자를 이용한 형변환

            // true와 숫자값의 비교
            console.log(true == 1);
            console.log(false == 0);
            console.log(true === 1);
            console.log(false === 0);

            console.log(NaN == NaN);
            // false!!? NaN만 자기자신이 자기자신이 아닌(?) 특이케이스
            console.log(NaN === NaN);

            // true일 것 같은 혼란스러운 녀석들
            console.log(false == null); //false
            console.log(false == NaN); //false
            console.log(false == undefined); //false

            // + 연산자를 이용한 형변환
            // 암묵적 형변환은 의도를 파악하기 어려워서 사용 자제
            console.log(+false);
            // console.log(Number(false));
            console.log(+true);
            // console.log(-false);
            // console.log(-true);
            console.log(false * 1);
            console.log(true * 1);
            console.log(1 + "12"); // string
            console.log(NaN + ""); // -> "NaN"
            console.log(Infinity + ""); // -> "Infinity"
            console.log(true + ""); // -> "true"
            console.log(false + ""); // -> "false"
            console.log("12" + 1); // string
            console.log(+"100" + 10); // number

            console.log(0 == -0);

            console.log(+"10" + +"10");

혼란을 주는 놈들
confuse 파일들..!

할당연산자

연산자 우선순위

let a=10;
a= a+10;

let b = 10;
b += 10; 
// b = b+10 줄여쓴 문법
// 할당연산자의 연산순위가 마지막이라서

let d = 10;
console.log(d++) // 10 선할당 후증가
console.log(++d) // 11 선증가 후할당

Object

let newuser = {
   //key : value
   id: "licat",
   pw: "1234", // 81DC9BDB52D04DC20036DBD8313ED055 이렇게 저장합니다. ("MD5는 사용하지 않습니다.")
   name: "leehojun",
   email: "paul@weniv.com",
   active: true,
        };

            console.log(newuser["id"]);
            console.log(newuser.id);

let user = [
    {
      //key : value
      id: "licat",
      pw: "1234", // 81DC9BDB52D04DC20036DBD8313ED055 이렇게 저장합니다. ("MD5는 사용하지 않습니다.")
      name: "leehojun",
      email: "paul@weniv.com",
      active: true,
    },
  	{
    //key : value
    id: "lion",
    pw: "2345", // 81DC9BDB52D04DC20036DBD8313ED055 이렇게 저장합니다. ("MD5는 사용하지 않습니다.")
    name: "leehojin",
    email: "pa@weniv.com",
    active: true,
  	},
	];

            console.log(user[0]["id"]);

spread 기법 사용하면 원본 만지지 않고 사용할수 있음

Array

값의 변경 가능함
대부분 동일한자료의 형태 반복

.pop() 과 .push()

?? pop 쓰면 원본 배열 수정되는데 원본 배열 변경 없이 값을 꺼내려면?

원본 수정 이라는 말을 자주 들을텐데, 원본수정은 피하는게 좋다.

let x =[10,20,30,40];
console.log([...x].pop());
//스프레드 기법 사용. 

원본 수정하고 싶지 않은데 pop한 결과값만 따로 갖고싶으면?

let x =[10,20,30,40];
let y=[...x];
y.pop();
console.log(y);

spread 기법 이용해서 y라는 새로운 객체 따로 만들어서 사용

코드를 입력하세요

.splice()

기존의 요소 삭제/교체/새 요소 추가.
인덱스, 카운트, 아이템 순서로 인자 전달함

//아이템 삭제
data3.splice(3,1); // 3번 인덱스 요소 하나만 삭제
data3.splice(3); //3번 인덱스부터 전부 삭제

//아이템 추가
data3.splice(3,1,"제주감귤");
data3.splice(3,0,["포도","체리"]);
// splice 문제
            let fish = ['정어리', '고등어', '돌고래', '참치', '고래상어', '코끼리'];
            // 1. splice 를 이용해 코끼리를 제거해보세요.
            // 2. 참치 다음에 다금바리를 추가해보세요.
            // 3. 돌고래를 제거하고 옥돔과 갈치를 추가해보세요.
// 다양한 답
            fish.splice(2, 1, "옥돔");
            fish.splice(3, 0, "갈치");

            fish.splice(2, 1, ...["옥돔", "갈치"]);
            fish.splice(2, 1, "옥돔", "갈치");
profile
꾸준함을 이길 방법은 없다

0개의 댓글