
호이스팅
스코프 내부 어디서든 변수 선언은 최상위에 선언된 것 처럼 행동
let user = {
name : 'mike',
age : 30,
}
function User(name, age) { // 생성자 명의 첫 글자는 대문자로
this.name = name;
this.age = age;
this.sayName = function() {
console.log(this.name);
}
}
let user1 = new User('Mike', 30);
let user2 = new User('Jane', 22);
user1.sayName(); 을 호출할 경우 'Mike'가 호출됨 그 이유는 this는 .앞의 객체를 지칭하기 때문임.let a = 'age';
const user = {
name : 'Mike',
[a] : 30, // age : 30
}
const user1 = {
[1 + 4] : 5,
["안녕" + "하세요"] : "Hello" // 식 자체를 넣는 것도 가능
}
const user = {
name : 'Mike',
age : 30,
}
const cloneUser = user; // 복제 안됨. 같은 리터럴을 바라봄. 하나바꾸면 둘다 변경됨.
const newUser = Object.assign({}, user); // 빈객체는 초기값, 두번째 값이 초기값에 들어감)
const newUser1 = Object.assign({hair : 'blue'}, user); // hair에다가 user리터럴 추가
const newUser2 = Object.assign(user, user1, user2); // 각 객체의 값들 병합
const newUser3 = Object.assign({name : 'blue'}, user2); // 같은 속성명일 경우 두번째 값을 덮어쓰기
const user = {
name : 'Mike',
age : 30,
gender : 'male',
}
Object.keys(user); // [ "name", "age", "gender" ] 키 값들을 배열로 반환
const user = {
name : 'Mike',
age : 30,
gender : 'male',
}
Object.values(user); // [ "Mike", 30, "male" ] 값들만 배열로 반환
const user = {
name : 'Mike',
age : 30,
gender : 'male',
}
Object.entries(user); // [ ["name","Mike"], ["age",30], ["gender", "male"] ]
const arr = [ ["name","Mike"], ["age",30], ["gender", "male"] ];
Object.fromEntries(arr); // { name : 'Mike', age : 30, gender : 'male',}
const obj = {
1: '1입니다',
false: '거짓'
}
Object.keys(obj); // ["1", "false"]
const a = Symbol(); //new를 붙이지 않습니다.
console.log(a); // Symbol()
console.log(b); // Symbol()
a === b; //false
a == b; //false
const id = Symbol('id'); // 설명을 추가하기 가능
const id = Symbol('id');
const user = {
name : 'Mike',
age : 30,
[id] : 'myid'
}
console.log(user); // { name: 'Mike', age: 30, [Symbol(id)]: 'myid' }
Object.keys(user); //[ 'name', 'age' ]
// values, entries, for문 등도 symbol형은 다 건너 뜀
const id1 = Symbol.for('id');
const id2 = Symbol.for('id');
id1 === id2; // true
Symbol.keyFor(id1) // "id", 생성할 때 적어주었던 이름을 알려줌
const id = Symbol('id 입니다');
id.description; // "id 입니다"
const id = Symbol('id');
const user = {
name : 'Mike',
age : 30,
[id] : 'myid'
}
Object.getOwnPropertySymbols(user); // [Symbol(id)] 심볼 키 보기
Reflect.ownKeys(user); //["name", "age", Symbol(id) ] 심볼 포함 모든 키 보기
let num = 10;
num.toString(); //"10"
num.toString(2); // "1010"
let num2 = 255;
num2.toString(16); // "ff"
Math.floor(Math.random()*100)+1let userRate = 30.1234;
userRate.toFixed(2); // 30.12
userRate.toFixed(0); // 30
userRate.toFixed(6); // 30.123400
let x = Number('x'); // NaN
x == NaN // false
x === NaN // false
NaN === NaN // false
isNaN(x) // true
inNaN(3) // false
문자를 숫자로 바꿔 줌
let margin = '10px';
parseInt(margin); // 10
Number(margin); // NaN
let redColor = 'f3';
parseInt(redColor); // NaN
parseInt(redColor, 16); //243
parseInt('11',2) //3
let padding = '18.5%';
parseInt(padding); //18
parseFloat(padding); //18.5
let html = '<div class="box_title">제목 </div>'; // 이럴 때는 ''
let desc = "It's 3 o'clock." // 이럴 때는 ""
// 백틱은 달러와 중괄호를 이용해 변수나 표현식을 넣을 수 있음.
let name = 'Mike';
let result = `My name is ${name}.` // My name is Mike.
let add = `2 더하기 3은 ${2+3}입니다.` // 2 더하기 3은 5입니다.
// 백틱은 여러줄 표현 가능
let desc = `오늘은
맑고
화창합니다.`;
// 백틱을 안쓴다면
let desc = '오늘은 \n 맑고 \n 화창합니다.';
let desc = '오늘은
맑고
화창합니다.'; // error
let desc = '안녕하세요.';
desc.length // 6
desc[2] //하
desc[4] = '용'; //변화 없음
let desc = "Hi guys. Nice to meet you.";
desc.toUpperCase(); // HI GUYS. NICE TO MEET YOU.
desc.toLowerCase(); // hi guys. nice to meet you.
let desc = "Hi guys. Nice to meet you.";
desc.indexOf('to'); // 14, 첫번째 위치만 반환
desc.indexOf('man'); // -1, 없음
let desc = 'abcdefg';
desc.slice(2) // "cdefg"
desc.slice(0,5) // "abcde"
desc.slice(2,-2) // "cde"
n과 m 사이 문자열 반환. n과 m, m과 n 상관없음. 음수는 0으로 인식
let desc = 'abcdefg';
desc.substring(2, 5); // "cde"
desc.substring(5, 2); // "cde"
n부터 시작, m개를 가져옴.
let desc = 'abcdefg';
desc.substr(2,4) //"cdef"
desc.substr(-4,2) //"de"
let desc = 'abcdefg ';
desc.trim(); // "abcdefg"
let hello = "hello!";
hello.repeat(3); // "hello!hello!hello!"
1 < 3 // true
"a" < "c" // true, 아스키코드
"a".codePointAt(0); // 97
String.fromCodePoint(97) // "a"
문자열이 있는지 검사. 있으면 true, 없으면 false
let str = "콜라는 맛있다."
if(str.includes("콜라")) {
console.log("금칙어가 있습니다. 콜라 싫어");
}else if(str.includes("사이다")) {
console.log("금칙어가 있습니다. 사이다 싫어");
}
출처: 유투버 코딩앙마 - 자바스크립트 중급강좌 1 ~ 6