label:
statement
loop1:
for (let i = 0; i < 3; i++) { //첫번째 for문은 "loop1" 레이블을 붙였다.
loop2:
for (let j = 0; j < 3; j++) { //두번째 for문은 "loop2" 레이블을 붙였다.
if (i === 1) { // i가 1일 경우 2로 건너띔
continue loop2;
}
console.log('i = ' + i + ', j = ' + j);
}
}
/*
출력결과
i=0, j=0
i=0, j=1
i=0, j=2
i=2, j=0
i=2, j=1
i=2, j=2
*/
loop1:
for (let i = 0; i < 3; i++) { //첫번째 for문은 "loop1" 레이블을 붙였다.
loop2:
for (let j = 0; j < 3; j++) { //두번째 for문은 "loop2" 레이블을 붙였다.
console.log('i = ' + i + ', j = ' + j);
if(i===1) continue; // continue loop2와 동일한 결과 출력
}
}
// i,j를 다 출력
// 외부 루프문에서 숫자는 증가시지만 내부루프문은 변화가 없음
foo: {
console.log('face');
break foo;
console.log('hehehe')
}
console.log('body');
/* 출력결과
"face"
"body"
*/
const person = {
name: "siwoo",
age: 25,
favoriteFood: "milk"
}
console.log(person);
person.name = "John";
console.log(person);
Object.freeze(person);
/*
const person = Object.freeze({
name: "siwoo",
age: 25,
favoriteFood: "milk"
});
이런 식으로도 가능
*/
person.name = 'siwoo';
console.log(person.name); // 'John' 출력
// 에러는 발생하지 않으나, 값이 변경되지 않고 그대로 출력됨
// 엄격모드에선 에러발생
// 에러내용: Error: Cannot assign to read only property 'name' of object '#<Object>'
const person2 = Object.freeze({
name: "siwoo",
age: 25,
favoriteFood: "milk",
address: {
street: "1234"
}
});
// 추가적으로 중첩된 객체를 속성으로 추가하는 경우 변경가능
console.log(person2);
person2.address.street = "5678";
console.log(person2);
// 중첩된 객체의 경우
// address: Object.freeze({street: "1234"})
// 동결 가능
// 객체의 속성이 값이 배열인경우에도 Object.freeze() 사용가능
// 이 경우에도 동결되어 있긴 때문에 배열의 변경 불가
/*
const CURRENCY_MAP = {
"United States" : "USD",
"India": "Rupee"
}
*/
/*
const CURRENCY_MAP = new Map([
["Unite States", "USD"],
["India", "Rupee"]
])
*/
const CURRENCY_MAP = new Map();
CURRENCY_MAP.set("United States", "USD");
console.log(CURRENCY_MAP);
const india = {name: "India"};
CURRENCY_MAP.set(india, "Rupee");
console.log(CURRENCY_MAP);
const uniqueNumber = [1, 234, 234, 45];
const set = new Set(uniqueNumber);
console.log(set) // [1,234,45]
/*
Set()의 메소드
has(), delete() => true,false 리턴
*/
console.log(0.1+0.2); /0.30000000000000004
// 십진법의 수를 이진법으로 바꿔서 계산하고 다시 십진법으로 반올림하면서 결과가 저렇게 나옴.
// time()
console.time("timer");
for(let i=0; i < 100000000; i++){
//blabla
}
console.timeEnd("timer");
// 이렇게 사용하면 for구문이 실행되는 시간을 구할수 있음
// 다만 사이사이에 주석달려있으면 그것도 포함해서 실행하기 때문에 실행시간 길어짐
// error()
const x = 2;
if(x !== 2) console.error("X is not 1");
// assert()
const x = 2;
console.assert(x === 1, "X is not 1");
// table()
const people = [
{name: "Siwoo", age: 25},
{name: "Areum", age: 21},
{name: "Hyewon", age: 20}
]
// 테이블 형식으로 콘솔에 출력
console.table(people);
const people = [
{name: "Siwoo", age: 25},
{name: "Areum", age: 21},
{name: "Hyewon", age: 20}
]
debugger
// 테이블 형식으로 콘솔에 출력
console.table(people);
! ### 참고