const // 참조 변경 불가. const 사용하도록 권장됨.
//코드 리뷰하는동안 해당 변수가 변경됐을지 신경쓸 필요 없다
let // 변경 가능
var // 그냥 쓰지마시오.
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 선증가 후할당
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 기법 사용하면 원본 만지지 않고 사용할수 있음
값의 변경 가능함
대부분 동일한자료의 형태 반복
?? 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라는 새로운 객체 따로 만들어서 사용
코드를 입력하세요
기존의 요소 삭제/교체/새 요소 추가.
인덱스, 카운트, 아이템 순서로 인자 전달함
//아이템 삭제
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, "옥돔", "갈치");