home
자바
home

함수

: 일정한 동작을 수행하는 코드

함수 기본

함수를 만들 때는 보통 function 예약어를 사용하거나 ⇒(화살표) 기호를 사용
화살표 기호를 사용한 함수를 화살표 함수(arrow function)라고 함
// 익명 함수 (1회성) function() {} // 또는 () => {}
JavaScript
복사
함수에 이름을 붙여보자.
// 함수 선언문 // 보통 세미콜론을 붙이지 않음 function a() {} // 함수 표현식 const b = function() {}; // 화살표 함수 const c = () => {};
JavaScript
복사
함수의 선언과 호출
// 함수 선언 function a() { console.log('Hello'); console.log('Function'); } // 함수 호출 a();
JavaScript
복사
함수 선언 시 undefined를 반환하고, 함수 호출 시 작성한 값을 반환한다. (return 사용 시)
또, return 은 함수의 진행을 멈춘다.

매개변수와 인수

function a(parameter) { console.log(parameter); } a('argument'); // argument
JavaScript
복사
‘argument’가 parameter의 자리로 들어간다.
여러 개의 매개변수와 인수를 가질 수 있고, 그 개수가 일치하지 않아도 된다.
function a(w, x, y, z) { console.log(w, x, y, z); console.log(arguments); } a('Hello', 'Parameter', 'Argument'); // Hello Parameter Argument undifined // Arguments(3) ['Hello', 'Parameter', 'Argument']
JavaScript
복사
const f = (x, y, z) => { return x * y * z; } // 더 간결하게 const f2 = (x, y, z) => x * y * z; f(2, 3, 4) // 24
JavaScript
복사

객체 리터럴 기본

// 이름이 필요하면 객체 리터럴, 필요 없으면 배열 사용 const zerocho = { name: '조현영', year: 00, month: 8, date: 12, gender: 'M', } console.log(zerocho.name); // 조현영 console.log(zerocho['name']); // 조현영 console.log(zerocho.date); // 12 console.log(zerocho['date']); // 12
JavaScript
복사
속성명이 문자열로 된 경우 zerocho.’속성’ 으로 접근 불가!
const name = 'date'; console.log(zerocho['name']); // 조현영 console.log(zerocho[name]); // 12 console.log(zerocho.hello); //undefined
JavaScript
복사
객체[’속성.이름’]처럼 []를 사용해야만 속성에 접근 가능
속성제거하기
delete zerocho.gender; console.log(zerocho.gender); // undefined
JavaScript
복사
delete 변수.속성;
배열과 함수가 객체인 이유
: 객체의 성질을 모두 다 사용할 수 있기 때문
배열과 함수에도 속성들을 추가/수정/삭제 할 수 있다.
객체는 함수와 배열을 포함하는 개념이라서 {}를 사용해 만든 객체를 객체 리터럴이라고 따로 부르는 것!
function hello() {} hello.a = 'really?'; const array = []; array.b = 'wow'; console.log(hello.a); // really? console.log(array.b); // wow
JavaScript
복사
단, 함수와 배열은 주로 객체 리터럴과는 다른 목적으로 사용한다.
임의 속성을 넣을 거라면 객체 리터럴 사용하기
메서드 이해하기
메서드 : 객체의 속성 값으로 함수를 넣었을 때의 속성
const debug = { log: function(value) { console.log(value); }, }; debug.log('Hello, Method');
JavaScript
복사
debug 객체 안의 log 메서드
console.log도 마찬가지로 console 객체 안에 log 메서드가 존재하는 것

객체의 비교(원시값과의 차이점)

객체 간의 비교
{} === {} // false
JavaScript
복사
객체끼리 비교 시 모양이 같아도 false가 나온다. (모양이 같아도 생성할 때마다 새로운 객체가 생성된다.)
따라서 같은 객체인지 비교하고 싶다면 기존 객체를 변수에 저장하도록 한다.
const a = { name: 'zerocho' }; // 객체 리터럴 const array = [1, 2, a]; // 배열 리터럴 console.log(a === array[2]); // true console.log(array === [1, 2, a]); // false
JavaScript
복사
리터럴은 메모리 상에서 매번 생성되기 때문에 같은 모양이라도 비교하면 false!!
‘ 조 ‘ 값에 접근하기
const zerocho = { name: { first: '현영', last: '조', }, gender: 'm', }; zerocho.name.last; // 혹은 zerocho['name']['last'];
JavaScript
복사