[Koans]koans 후기2
primitive data type, reference data type
원시자료형을 변수에 할당할 경우, 값 자체의 복제
let name = "DK";
let newname = name;
console.log(newname); // 'DK'
name = "DOKY";
console.log(name);
console.log(newname);
원시 자료형의 데이터를 함수의 전달인자로 전달할 경우, 값 자체의 복제
let curYear = 2020;
function afterTenYears(year) {
year = year + 10;
console.log(year); // 2030
return year;
}
afterTenYears(curYear);
console.log(afterTenYears(curYear)); // 2030
console.log(curYear); // 2020;
let curYear = 2020;
function afterTenYears(year) {
year = year + 10;
return year;
}
let afTenYe = afterTenYears(curYear);
console.log(afTenYe); // 2030
참조 자료형을 변수에 할당할 경우, 데이터의 주소가 저장
const username = ["DK", "SB", "JS"];
let friend = username;
username.push("IG");
console.log(friend); // ['DK', 'SB', 'JS', 'IG']
array
slice
const arr = ["peanut", "butter", "and", "jelly"];
console.log(arr.slice(1)); // (['butter', 'and', 'jelly']);
console.log(arr.slice(0, 1)); // (['peanut']);
console.log(arr.slice(0, 2)); // (['peanut', 'butter']);
console.log(arr.slice(2, 2)); // ([]);
console.log(arr.slice(2, 20)); // (['and', 'jelly']);
console.log(arr.slice(3, 0)); // ([]);
console.log(arr.slice(3, 100)); // (['jelly']);
console.log(arr.slice(5, 1)); // ([]);
console.log(arr.slice(0)); // (['peanut', 'butter', 'and', 'jelly']);
object
property
const obj = {};
console.log(obj.length); // undefined
const user = { name: "DK" };
console.log(name in user); // false
console.log("name" in user); // true
console.log(user.name); // 'DK'
console.log(user["name"]); // 'DK'
this
const curYear = new Date().getFullYear();
const megalomaniac = {
birthYear: 1970,
calcAge: function (curYear) {
return curYear - this.birthYear;
},
changeYear: function (newYear) {
this.birthYear = newYear;
},
};
console.log(curYear); // 2022
console.log(megalomaniac.calcAge(curYear)); // 52
megalomaniac.birthYear = 2000;
console.log(megalomaniac.calcAge(curYear)); // 22;
megalomaniac.changeYear(2010);
console.log(megalomaniac.calcAge(curYear)); // 12
얕은 복사(shallow copy) 깊은 복사(deep copy)
obj = { a: 2, b: { C: 5 } };
arr = [1, 2, 3, [4]];
let slice = arr.slice();
assign = Object.assign({}, obj);
spreadArr = [...arr];
spreadObj = { ...obj };
console.log(slice === arr); // false
console.log(slice[3] === arr[3]); // true...
console.log(spreadObj.b === obj.b); /// true...
객체 안에 객체, 배열 안에 배열이 있는 경우 얕은 복사가 일어난다.
댓글남기기