문제풀이를통해 어느정도 개념을정리할수있게되었고 블로깅을통해 정리해보고자한다.
가장먼저 type에대한 이야기를 할것인데 type에는 숫자 문자열 배열 등등 여러가지가있고 이에따라 같은 숫자가적혀잇더라도 유형에따라 더해지지않고 그대로붙여지기도하며 주의해야할 요소이다.
문제내에서는 이를비교하기위해 연산자 ==,===를사용했고 같은타입에 엄격한 동치연산자인 ===를 사용하는게 중요하다.
const 로 선언된변수는 재할당이금지되며 이런이유때문에 let var에비해 안전하다.
----찾은글---
변수를 선언하는 시점에는 재할당이 필요할지 잘 모르는 경우가 많다. 그리고 객체는 의외로 재할당을 하는 경우가 드물다. 따라서 변수를 선언할 때에는 일단 const 키워드를 사용하도록 하자. 반드시 재할당이 필요하다면(반드시 재할당이 필요한지 한번 생각해 볼 일이다.) 그때 const를 let 키워드로 변경해도 결코 늦지 않는다.
스코프는 변수의값을 찾을때확인하는곳 범위를 뜻하며 잘주의해야함.
it('Array의 기본을 확인합니다.', function () {
const emptyArr = [];
expect(typeof emptyArr === 'array').to.equal(false);
expect(emptyArr.length).to.equal(0);
const multiTypeArr = [
0,
1,
'two',
function () {
return 3;
},
{ value1: 4, value2: 5 },
[6, 7],
];
expect(multiTypeArr.length).to.equal(6);
expect(multiTypeArr[0]).to.equal(0);
expect(multiTypeArr[2]).to.equal('two');
expect(multiTypeArr[3]()).to.equal(3);
expect(multiTypeArr[4].value1).to.equal(4);
expect(multiTypeArr[4]['value2']).to.equal(5);
expect(multiTypeArr[5][1]).to.equal(7);
});
문제에서 포인트는
expect(multiTypeArr[4]['value2']).to.equal(5);
expect(multiTypeArr[5][1]).to.equal(7);
두구문인데 각각 요소안에 요소를 표현할때는 이런방식응로표현하면되고
expect(multiTypeArr[4]['value2']).to.equal(5);위구문은 앞에 예시와,마찬가지로
expect(mulitTypeArr[4].value2 해도 같은결과가나온다.
객체에서 중요했던건 객체를 함수전달인자로전달할경우 레퍼런스가 전달된다는점이었다.
주소복사를하느냐 아니냐가 결과값을 크게달라지게할수있어 이를 주의해야한다.
(... )하나만기억하자
concatenated merged 과함께 concat도 비슷한결과값을만들어낼수있다.
it('rest/spread 문법을 객체 분해에 적용할 수 있습니다 #3', () => {
const user = {
name: '김코딩',
company: {
name: 'Code States',
department: 'Development',
role: {
name: 'Software Engineer'
}
},
age: 35
}
const changedUser = {
...user,
name: '박해커',
age: 20
}
const overwriteChanges = {
name: '박해커',
age: 20,
...user
}
const changedDepartment = {
...user,
company: {
...user.company,
department: 'Marketing'
}
}
expect(changedUser).to.eql({name: '박해커', company: {name: 'Code States', department: 'Development',
role: {name: 'Software Engineer'}}, age: 20 })
expect(overwriteChanges).to.eql({name: '김코딩', age: 35, company: {name: 'Code States', department: 'Development',
role: {name: 'Software Engineer'}}})
expect(changedDepartment).to.eql({name: '김코딩', company: {name: 'Code States', department: 'Marketing',
role: {name: 'Software Engineer'}}, age: 35})
})
})
마지막부분만 간단하게 설명하면 changedDepartment는 user객체를 가져온 후에 , company키의 요소에 user.company의 값들을 할당을 하였다.
department가 user.company 아래에있기때문에, department의 요소가 변화된다. 순서에따라 결과값이 다르게나오기떄문에 주의해야한다.