2025-09-11-Thursday

오유찬·2025년 9월 14일

daily

목록 보기
26/30

Day planner


  • CTF || Wargame ✅ 2025-09-11
  • TryHackMe || HTB || 보안 기사 공부 || K-Sheild Jr.
  • 보안 뉴스 || 보안 논문 읽기
  • Algorithm || Python
  • CVE

Daily Log


공부 기록


JS

let isConfirm = true;

function confirm(onYes, onNo) {
if (isConfirm) onYes();
else onNo();
}

confirm(
() => console.log('yes'),
() => console.log('no')
);

// yes

confirm의 첫 번째 인수로 'yes'를 출력하는 화살표 함수를 전달한다. 이 함수는 매개변수 onYes에 저장된다.

함수가 조건문이나 반복문 또는 다른 함수 내부에서 선언되면 지역 스코프를 갖는다. (함수표현식이거나 화살표 함수일 때) 그게 아니면 hoisting으로 루프 밖에서 호출 가능하다. → ES6부터 let, const는 블록 스코프를 더 철저히 따르도록 설계해서 이렇게 된 것 같다.

let person = {
name : "chan",
age: 25,
"like cat": TextTrackCue
};

const personName = person.name; // 점 표기법
const personAge = person["age"]; // 괄호 표기법

console.log("name : " + personName + " & age is " + personAge);  

person.gender = "male";
person["nickname"] = "hacker";

console.log(person["gender"]);
console.log(person.nickname);
function addProperty(obj, key, value) {
obj[key] = value;
}

let obj = {}; // 빈 객체를 선언할 때, 사용하는 리터럴 선언법
// let obj = new Object(); - 객체 생성자 선언법

addProperty(obj, "a", 1);
addProperty(obj, "b", 2);

console.log(obj);

상수로 선언한 객체는 프로퍼티를 추가하거나 수정할 수 없나?
→ 객체 내부의 프로퍼티는 자유롭게 수정 및 삭제 가능

method : 객체에서 값이 함수인 프로퍼티 → method는 데이터가 아니라 객체의 동작을 의미한다.

배열을 선언할 때는 배열 생성자보다 배열 리터럴을 주로 사용한다. (문법이 간결하기 때문에)
let arrA = []; , let arrB = ['chicken', 'ramen'];

배열은 값으로 어떤 자료형이든지 사용 가능하다. 다른 배열, 객체, 함수 모두 가능하다.

단락 평가
&&, || 를 사용할 때, 참이나 거짓이 왼쪽에 위치한 첫 번째 피연산자 값으로 이미 결정이 나게 되면 단락 평가가 이루어지게 되므로 그 다음 피연산자부터는 계산하지 않는다.

객체의 속성이 있는 지 알고 코드를 진행하다가 undefined나 null로 인해서 예상치 못한 결과가 나올 수 있다. 이때마다 조건문으로 person.name !== undefined && person.name !== null를 작성하는 건 비효율적이다. 이럴 때 단락평가를 사용하면 쉽게 작성할 수 있다.

function getName(person) {
	return person && person.name;
}

let person = { name: "chan" };
let name1 = getName(undefined);
let name2 = getName(null);
let name3 = getName(person);

console.log(name1, name2, name3);

null 병합 연산자 (?? ) : 둘 중 null이나 undefined가 아닌 값이 있으면 그 값을 출력하고, 둘 다 null이나 undefined가 아니라면 왼쪽 피연산자를 출력한다.

함수 또한 객체이고, 함수는 값으로 취급된다. 이 특징으로 함수를 값으로 저장하는 함수 표현식이 가능하고, 다른 함수에 인수로 전달할 수 있다.

JS에서는 객체 자료형의 값 크기가 유동적으로 변하기 때문에 일정한 크기의 공간을 할당해주는 게 아닌 값을 저장하는 곳의 주소만 저장하는 방식을 이용한다.(Reference)

for .. of 반복문 ← 배열을 순회할 때

let arr = [1,2,3,4];

for(let item of arr) {
	console.log(item);
}

Object.keys(person); : 객체 프로퍼티의 key를 배열로 반환
이때 문자열로 반환된다는 점을 유의!

for .. in 반복문 ← 객체를 순회할 때

for (let key in person) {
	const value = person[key];
	console.log(key, value);
}
profile
열심히 하면 재밌다

0개의 댓글