2023. 11. 1. 08:28ㆍ카테고리 없음
호이스팅
호이스팅은 스코프 단위로 일어난다.
var는 펑션안에서만 지역변수로서 작동한다.전역에서 지역변수를 끌어올수없다.
포문 이프문 와일문등의 var선언문은 전역변수로서 작동한다.
let 과 const는 함수 이프문 포문 와일문 등등 전부에서 지역변수로서 작동된다.
~~~~~~~~~~~~~~~~~~~~~~~
function user( name , age){
this.name = name
this.age = age
}
let user1 = new user('mike' , 30)
let user2 = new user('jane' , 22)
let user3 = new user('tom' , 17)
// 펑션이라는 와플 툴(생성자함수)를 new를 이용하여 각각 새로운 객체 3개를 만들어낸다.
//이때 this는 각각 유저 원 투 쓰리를 의미한다.
//새로운 객체를 만드는 행위이기 때문에 new를 빼면 그냥 그 펑션에 인자를 넣은 값으로 호출
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
const user = {
name : 'mike',
age : 30
}
const cloneuser = user ;
//이러면 클론유저가 유저를 복사한것인가? 객체의 메모리 주소만 같고 있는 유저를 같고 왔기때문에
같은 객체를 참조한다. 이러면 저 객체를 변경하면 유저랑 클론유저가 다같이 바뀌는 위험
const newuser = object.assign({}, user);
//이럴때 어싸인을 사용한다. 유저객체의 값을 똑같이 가지는 새 객체를 만든다. 중괄호 안에 새 키와
//벨류를 넣으면 새객체에 적용된다. 중복된 키에 따른 벨류는 유저의 객체의 해당 내용으로 덮어쓰기 당한다.
~~~~~~~~~~~~~~~~~~~
const user = {
name : 'mike',
age : 30
gender : 'male'
}
object.keys(user)
// [name , age , male] 해당객체의 키들만 가져다 배열만든다.
object.values(user)
// ['mike', 30 , ' male'] 이건 벨류값들만 가져와 배열을 만든다.
object.entries(user)
// ['name' , 'mike'], [ 'age' ,'30' ] , ['gender' , 'male'] 객체의 키와 밸류 쌍을 각각 배열로 가져온다.
~~~~~~~~~~~~~~~~~~~~~
let n = 'name' ;
let a = ' age' ;
const user = {
[n] : 'mike',
[a] : 30 ,
};
//이렇게 하면 선언할당한 값들을 유저의 키들로 갖다 쓸수 있다.
~~~~~~~~~~~~~~~~~~~
function makeobj(key , val){
return {
[key] : val,
}
}
const obj = makeobj('나이' , 33);
//이런식으로 함수화 시켜놓으면 이 객체를 비슷한 객체 만들기 용이하다.
~~~~~~~~~~~~~~~~~~~~~~~~~
let arr = [
[ ' mon' , '월']
[ ' tue' , '화' ]
]
const result = object.fromentries(arr)
// {mon: '월" , tue: '화'} 라는 오브젝트로 출력된다. 배열을 오브젝트로 만드는 메서드
~~~~~~~~~~~~~~~~~~~~~~~~~~
function showname(...name){
console.log(name);
}
show.name(); // [ ]
showname( ' mike ' ) // ['mike']
showname( ' mike ' , ' tom ' ) // ['mike', 'tom']
// 함수의 파라미터 자리에 땡땡땡 변수를 쓰면 함수를 호출할때 인자의 개수에 상관없이 잘 호출된다.
//이것이 나머지 매개변수
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~