항해99 12기 - 230119 TIL

지윤·2023년 1월 19일
0

항해99

목록 보기
9/40
post-thumbnail

오늘 한 일

함수와 객체에 대해 배운 날! 공부할 양이 너무 많아서 힘들었다. 함수.. 이렇게 어려웠구나..하고 넘어가는데 객체, 배열 자료가 너무 많아서 읽다가 지쳤다. 구조 분해 할당이 나올땐 내가 뭘 읽고 있는거지..하는 생각이 들었다. 주말동안 복습할 시간이 많아서 정말 다행이다. 진짜 여러번 읽고 안 읽히면 기계적으로 읽어보고 해야겠다.

스터디

팀원 분 중 한 분이 일정이 있으셔서 나머지 한분과 mission을 나눠서 했다. 함수와 객체에 대한 질문 이었는데, 처음 질문만 봤을땐 굉장히 어려워보였는데 팀원분이 설명을 너무 잘 써놓으셔서 쉽게 이해가 됐다!

  1. 해시 자료구조란?
메뉴판이 있으면 키(메뉴 이름)를 해쉬함수를 통해 숫자로 바꿔주고 
그 숫자가 인덱스(번호)가 되고 거기에 밸류(가격)가 저장되는 구조를 말한다.
  1. 자바스크립트 객체로 주로 하는일이란?
서랍장을 객체로 서랍 안에 파일을 프로퍼티로 파일에 붙여있는 이름표를 
키(key)로 안에 있는 내용을 값(value)이라고 생각하면 된다.
즉 여러 속성을 하나의 변수에 저장 할 수 있도록 해주고 
키(이름표)를 보고 프로퍼티(파일)를 찾을 수 있게 해준다.
  1. 자바스크립트 객체의 프로퍼티란?
서랍장 안에 이름표가 붙어 있는 파일이라고 생각하면 된다 
객체(서랍장) 안에 선언된 key(이름표)와 value(내용)으로 이루어진 
한 쌍(파일)을 말한다. 
프로퍼티는 프로퍼티 키로 유일하게 식별할 수 있다. 
즉, 프로퍼티 키는 프로퍼티를 식별하기 위한 식별자이다.
  1. 단순한 해시와 자바스크립트 객체의 차이점 이란?
해시는 자료를 저장하는 데이터 기법이고 
즉 해시함수라는 것을 통해 저장하는 방식이고 객체는 키와 값으로 된 
프로퍼티를 저장한 것이다 해시함수를 쓰는 것이 아니라 단순하게 저장된 방식
  1. 함수와 메서드의 차이는 무엇일까요? 가장 핵심적인 차이는 무엇이고, 왜 굳이 이렇게 구분했을까요?
- 호출방식에 따라 다르다, 함수를 호출하는 객체가 있는 경우 메서드, 
호출하는 객체가 없는 경우 함수
- 함수는 객체로 부터 독립적이며, 메서드는 객체에 종속적이다.
- ‘객체’로부터 독립적인가 아닌가가 함수와 메서드를 나누는 기준이다.
let obj ={
	test: function(){
		console.log('test() 메서드 호출');
	}
}

function test2(){
	console.log('test2() 함수 호출');
}

	obj.test(); //메서드
	test2(); //함수
  1. 자바스크립트에서 일급객체란? 왜 그건 일급객체일까요?
아래의 세 조건을 만족하면 일급객체로 간주한다.
1. 변수에 할당 할 수 있고, 
2. 파라미터(parameter)로 전달 할 수 있고,
3. 함수의 반환 값으로 사용할 수 있다.
// 1. 변수에 할당 할 수 있다.

let test = function(a,b){
	return a + b;
}

// 2. 파라미터로 전달 할 수 있다. 
//	-> me에 파라미터로 algorithm을 넣어 '어렵다..'가 출력된다.
let algorithm = function(){
	let algo = "어렵다..";
	return algo;
}

let me = function(text){
	console.log(text);
}

me(algorithm()); //어렵다.. 출력


//3. 함수의 반환 값으로 사용할 수 있다.
function javaScript(){
	return function(){
		console.log("자바스크립트도 어려워요");
    }
}

let me = javaScript();
me();
  1. 다른 언어에서의 함수는 어떤 특징이 있나요?
자바스크립트에서의 함수는 일급객체이다. 
다른언어에서는 함수가 값이 될 수 없지만, 자바스크립트에서는 값이 될 수 있다. 
(값이기 때문에 변수로 할당하고, 다른 함수의 인자로 전달되고,
반환 값으로도 사용 할 수 있다.)
  1. 생성자 함수에 대해서 조금만 더 설명해줄 수 있나요?
1. 생성자 함수란 ‘객체’를 생성할 때 사용하는 함수이다.
2. 여러개의 동일한 프로퍼티를 가지는 객체를 생성하기 위해서 필요하다.
3. 생성자 명은 일반 함수와 구별하기 위해 대문자로 시작한다.
4. new 키워드를 통해 생성자 함수를 호출한다.
5. 또한 부모함수명.prototype.생성할함수명 = function() {}으로도 
생성 가능하다.
profile
방금 태어난 개발자

0개의 댓글