let value = "value1"
console.log(value) // value1
value = "value2" // let없이 재할당 가능 !
console.log(value) // value2
let value = "value3" // let을 붙이면 재선언 불가능 ㅠ
//SyntaxError: Identifier 'value' has already been declared 라는 오류가 뜨게됨
const value; // 초기값 없이 선언 불가능, SyntaxError: Missing initializer in const declaration
---
const value = "value1"
console.log(value) // value1
value = "value2" // 재할당 불가능, TypeError: Assignment to constant variable.
const value = "value2" // 재선언 불가능, SyntaxError: Identifier 'value' has already been declared
// ES5
function func() {
return true
}
// ES6
const func = () => true
const func = () => {
return true
}
() => {}
parm => {}
(parm1, parm2, ...parms) -> {}
// 익명 화살표 함수
() => {}
// condition ? true인 경우 : false인 경우
condition ? expr1 : expr2
console.log(true ? "참" : "거짓") // 참
console.log(false ? "참" : "거짓") // 거짓
console.log(2*2 === 4 ? "참" : "거짓") // 참
console.log(1 !== 4 ? "참" : "거짓") // 거짓
let [value1, value2] = [1, "new"];
console.log("첫번째 벨류 =>", value1);
console.log("두번째 벨류 =>",value2);

let arr = ["value1", "value2", "value3"]; // value4가 있으면 4가 아닌 value4로 출력
let [a, b, c, d=4] = arr;
console.log(a);
console.log(b);
console.log(c);
console.log(d);

let user = {
name: "nbc",
age: 30
};
let {name, age} = user;
console.log("name =>", name)
console.log("age =>", age)

// 새로운 이름으로 할당
let user = {
name: "nbc",
age: 30
};
let {name : newname, age : newage } = user;
console.log("newname =>", newname);
console.log("newage =>", newage);

let user = {
name: "nbc",
age: 30 // birthday는 값이 없음
};
let {name, age, birthday } = user;
console.log(name)
console.log(age)
console.log(birthday) // 초기값이 없어 undefined 로 뜸

const name = "nbc"
const age = "30"
const obj = {
name,
age: newAge
}
const obj = {
name,
age
}
let arr = [1, 2, 3];
let newarr = [...arr, 4];
console.log(arr); // [1, 2, 3]
console.log(newarr); // [1, 2, 3, 4]
let user = {name : "mbc", age : 30};
let user2 = {...user}
console.log (user) // { name: 'mbc', age: 30 }
console.log (user2) // { name: 'mbc', age: 30 }
// 객체
let user = {name: "nbc", age: 30};
let user2 = {...user}
user2.name = "nbc2"
console.log(user.name) // nbc
console.log(user2.name) // nbc2
function examplefunc(a, b, c, ...args) {
console.log(a, b, c);
console.log(args);
}
examplefunc(1, 2, 3, 4, 5, 6, 7); // 1 2 3
// [4, 5, 6, 7]
function examplefunc(a, b, c, ...args) {
console.log(a, b, c);
console.log(args);
}
examplefunc(1, 2, 3, 4, 5, 6, 7); // 1 2 3
// [4, 5, 6, 7]
console.log(`Hello, World ${ 3 + 3 } `); // Hello, World 6 Tap 키 위에 백틱 ` 이용
const testvalue = "하이요 !";
console.log(`Hello, World ${testvalue} `); // Hello, World 하이요 !
console.log(`
Hello !!
my name is Lee Sin!!!
Iku !!`) // Hello !!
// my name is Lee Sin!!!
// Iku !!
const sayHello = function() {
console.log('Hello!');
};
sayHello(); // "Hello!" 출력
2-1 콜백함수 : 매개변수로써 쓰이는 함수
2-2 고차함수 : 함수를 인자로 받거나 return 하는 함수
// 콜백함수 예시
function callfunction(func) {
// 매개변수로 받은 변수가 사실 함수다.
func();
}
const sayhello = function () {
console.log('Hello!'); // => function 부터 아래 sayhello 에 들어감
};
callfunction(sayhello); // "Hello!" 출력
// 고차함수 예시
function createadder(num) {
return function (x) {
return x + num; // => function 부터 아래 createadder(5) 를 대체함
};
}
const addfive = createadder(5);
console.log(addfive(10)); // 15 출력
const person = {
name : 'john',
age : 31,
ismarried : true,
sayhello : function () {
console.log('hello, my name is ' + this.name); // this 를 이용한 방법1)
console.log(`hello, my name is ${this.name}`); // 템플릿 리터럴 이용한 방법2)
}
};
person.sayhello(); // "Hello, my name is John" 출력
// 화살표 함수 이용한 방법3)
const person = {
name : 'john',
age : 31,
ismarried : true,
sayhello : () => { // 화살표 함수 이용
console.log (`hello, my name is ${this.name}`) // 화살표 함수는 this 를 바인딩 하지 않는다.
}
};
person.sayhello(); // 따라서 결과는 "hello, my name is undefined" 로 출력
const myArr = [
function (a, b) {
return a + b;
}, // 0번째 요소
function (a, b) {
return a - b;
}, // 1번째 요소
];
// 더하기
console.log(myArr[0](1, 3)); // 위 0번째 요소에 a에 1, b에 3을 넣으면 4
// 빼기
console.log(myArr[1](8, 2)); // 위 1번째 요소에 a에 8, b에 2을 넣으면 6

function multiplyby(num) {
return function (x) {
return x * num;
};
}
function add (x, y) {
return x + y;
}
const multiplybytwo = multiplyby(2);
// const multiplybytwo =function (x) {
// return x * 2;
// }
const multiplybythree = multiplyby(3);
// const multiplybythree = function (x) {
// return x * 3;
// }
console.log(multiplybytwo(10)) // (10)에 2를 곱해 20
console.log(multiplybythree(20)) // (20)에 3를 곱해 60

const mymap = new map();
mymap.set('key', 'value')
//...
//...
mymap.get('key') // set 과 get 은 항상 세트다!!
// 반복 ... !! -> method : key, values, entries
const mymap = new Map();
mymap.set('one', 1);
mymap.set('two', 2);
mymap.set('three', 3);
// console.log(mymap.keys()); // { 'one', 'two', 'three' }
// for (const key of mymap.keys()) { //one
// console.log(key); two
//} three
console.log(mymap.values()); // [Map Iterator] { 1, 2, 3 }
for (const value of mymap.values()) {
console.log(value); //1
} //2
//3
for (const entry of mymap.entries()) {
console.log(entry); //[ 'one', 1 ]
} //[ 'two', 2 ]
//[ 'three', 3 ]
console.log(mymap.size); // 3개니까 3
console.log(mymap.has("two"); // two 있으니까 true
고유한 값을 저장하는 자료구조
값만 저장
키는 저장x
값이 중복되지 않는 유일한 요소로만 구성.
값 추가, 검색, 값 삭제, 모든 값 제거, 존재 여부 확인
const myset = new Set();
myset.add("value1"); // 1개
myset.add("value2"); // 2개
myset.add("value3"); // 3개
myset.add("value3"); // 중복이니까 그대로 3개
console.log(myset.size); // 3
const myset = new Set();
myset.add("value1"); // 1개
myset.add("value2"); // 2개
myset.add("value3"); // 3개
myset.add("value4");
for(const value of myset.values()) {
console.log(value);
}
