728x90
목차
1. JavaScript의 함수작성법
- 함수의 기본
- ✔함수와 메모리
- ✔함수 작성법 팁
- 매개변수의 기본값
- 콜백함수, 활용법, 문제
- 원시값과 객체값의 비교
- ✔자바 스크립트에만 존재하는 코드
2. JavaScript의 객체 활용법
- 객체 생성(기본 리터럴법으로 생성)
- 객체의 출력법
- 프로퍼티 추가하기
- 프로퍼티 삭제하기
- 동적으로 속성에 접근하기
- 객체에 프로퍼티 추가해주는 함수 만들기
- 객체에 프로퍼티 삭제해주는 함수 만들기
- 객체 생성하는 함수 만들기
- 생성자 만들기
- 생성된 생성자를 이용하여 객체 생성하기
- 생성된 객체를 출력
1. JavaScript의 함수작성법
1-1. 함수의 기본
- 매개 변수 두 수를 입력 받아 Sum을 출력해주는 함수
function 함수명(매개변수1, 매개변수2,...){
함수 호출시 실행할 문장;
}
// ✔함수의 기본
function sum(num1, num2){
console.log('sum()호출!!');
return num1 + num2;
}
const result = sum(10, 3);
console.log(result);
console.log('-------------');
1-2. ✔함수와 메모리
- 위 소스코드 이어서 사용합니다.
-사용법
const 함수명 = 이전함수명;
// ✔함수와 메모리
// add의 상수에 sum함수를 저장한다. (같은 메모리를 저장할테니깐!!!)
const add = sum; // 위에서 add상수에 sum함수를 담아주었다!
console.log(sum(10,3));
console.log(add(10,3));
console.log('-------------');
1-3. ✔함수 작성법 팁
- 조건식이 있을 때 조건을 만족하지 않는 경우 함수도입부분에서 함수를 미리 종료 시키는게 속도면 에서 빠르고 가독성도 높힐수 있는 방법이다.
// ✔✔함수의 작성팁 !!!
// 조건식이 있을 때 조건을 만족하지 않는 경우 함수 도입부분에서
// 함수를 미리 종료 시키는게 속도도 빠르고 가독성도 높힐수 있는 방법이다.
function print(num){
if(num <= 0) return; // 이부분이 팁 !
console.log(num);
}
print(10);
print(-5);// -5 이기 때문에 num값이 0보다 작아서 그냥 짜름;
console.log('-------------');
-5의 값은 0보다 작기때문에 출력되지 않습니다.
1-4. 매개변수의 기본값
- 매개변수의 기본값을 정의 해주지 않으면 무조건 undefined이고 undefined와의 연산은 NaN이다.!!
- arguments(매개변수): 함수의 전달된 인수에 해당하는 Array 형태의 객체!!
// ✔매개변수의 기본값
// 매개변수의 기본값을 정의 해주지 않으면 무조건 undefined이고
// undefined와의 연산은 NaN이다.!!
// arguments(매개변수): 함수의 전달된 인수에 해당하는 Array 형태의 객체!!
function total(num1=0, num2=0){
console.log(num1);
console.log(num2);
console.log('arguments:', arguments); //아규먼트 객체형태를 찍어준다.
console.log('arguments:', arguments[1]); //아규먼트 [1]인덱스에 있는값
return num1 + num2 ;
}
console.log(total()); //매개변수가 없을때!
console.log(total(10,3));// 멀쩡한 매개변수 전달.
console.log('-------------');
1-5. 콜백함수, 활용법, 문제
- 화살표함수 익명 함수 이면서, 매개변수 a,b 두개를 받아 a와 b를 더해주고 리턴 해주는 화살표함수
// 콜백 함수
const calc_add = (a, b) => a+b; // 화살표함수 익명 함수 이면서, 매개변수 a,b 두개를 받아 a와 b를 더해주고 리턴 해주는 화살표함수
const calc_multiply = (a,b) => a*b;
console.log(calc_add(10,5));
console.log(calc_multiply(10,5));
// 콜백함수로 만들어보기
function calculater(num1, num2, action){ //action이라는 변수를 선언
if(num1 <0 || num2 < 0) return; // 일단 처음으로 걸러낼꺼 걸러내기!! num1 또는 num2 가 0 보다 작으면 돌려보내!!
const result = action(num1, num2);
console.log(result);
return result;
}
calculater(4,2, calc_add); //계산할 매개변수를 넣고 계산할 함수명을 입력!!
calculater(4,2, calc_multiply); //계산할 매개변수를 넣고 계산할 함수명을 입력!!
console.log('-------------');
문제)
- 특정 숫자를 입력하면(매개변수로) 해당 숫자까지를 출력해주는것
예) 5를 입력하면 1,2,3,4,5를 출력 - 특정 숫자를 입력하면 해당 숫자의 제곱을 출력
예) 4를 입력하면 16이 출력 - 위 두개의 식을 함수로 만들고 두함수의 기능을 모두 사용할수 있는 iterate()를 만들어보자.
function num_list(num){
for(let i = 1; i<=num; i++ ){
console.log(i);
}
}
function PP (num){
return num*num;
}
function iterate(num, action){
if(num < 0 ) return;
const result = action(num);
console.log(result);
return result;
}
iterate(4, num_list);
iterate(4, PP);
console.log('-------------');
1-6. 원시값과 객체값의 비교
- 윈시값: 값에 의한 복사
- 객체값: 참조에 의한 복사(메모리 주소)
// 원시값과 객체값의 비교
// 원시값: 값에 의한 복사
// 객체값: 참조에 의한 복사(메모리 주소)
function display(num){
num = 10;
console.log(num);
}
const value = 5;
display(value);
console.log(value);
function displayObj(obj){
// 실제 원시 데이터를 바꾸는 함수는 좋지 않다!!!! 함수에서는 계산만 하는것이 좋다고 생각한다.
obj.age = 13; // 객체의 값을 변경하는것은 좋지 못함 !🤢
console.log(obj);
}
const dog = {name:'루시', age:14};
// displayObj(dog); // dog이라는 객체를 만들어 주소값을 매개변수로 보내줬다.
console.log(dog); //주소 자체를 바꾸기 때문에 바뀐 값으로 출력된다.
// ✔자바스크립트에만 존재 하는 코드 (원본코드를 건드리니지 않고 값은 변경하는 방법)
function changeAge (obj){
return {...obj, age:13}; // obj를 복사해라 !! 하지만 메모리주소값은 변한다.
}
dog2 = changeAge(dog);
console.log(dog2);
console.log('-------------');
2. JavaScript의 객체 활용법
2-1.객체 생성(기본 리터럴법으로 생성)
- 키값에 하이푼(-), 띄어쓰기, 특수문자 넣고 싶을땐, 싱클쿼터(' ')안에 넣어주면 된다.
// 객체 생성 (리터럴법으로 생성)
let dog = {
name : '루시',
age : 14,
'dog-weight' : 3.5, // 키값을 하이푼(-),띄어쓰기,특수문자를 넣고 싶을땐 '' 안에 넣어줘야한다.
['dog-height'] : 0.8
}
2-2.객체의 출력법
// **객체의 출력법
console.log(dog.name);
console.log(dog['age']);
2-3.프로퍼티 추가하기
// **프로퍼티 추가하기
dog.family = '포메라니안';
console.log(dog.family);
console.log(dog['family']);
2-4.프로퍼티 삭제하기
// **프로퍼티 삭제법
delete dog['dog-height'];
console.log(dog['dog-height']);
console.log('------------------');
2-1~2-4까지 통 소스
// 객체 생성 (리터럴법으로 생성)
let dog = {
name : '루시',
age : 14,
'dog-weight' : 3.5, // 키값을 하이푼(-),띄어쓰기,특수문자를 넣고 싶을땐 '' 안에 넣어줘야한다.
['dog-height'] : 0.8
}
// **객체의 출력법
console.log(dog.name);
console.log(dog['age']);
// **프로퍼티 추가하기
dog.family = '포메라니안';
console.log(dog.family);
console.log(dog['family']);
// **프로퍼티 삭제법
delete dog['dog-height'];
console.log(dog['dog-height']);
console.log('------------------');
2-5.동적으로 속성에 접근하기
// **동적으로 속성에 접근하기 !
function getValue(obj, key){ // 객체 이름, 키값
// dog.name에 접근 하고 싶을때
return obj[key];// 입력받은 객체에 키값에 해당하는값을 보여주세요
}
console.log(getValue(dog, 'name'));
2-6.객체에 프로퍼티 추가해주는 함수 만들기
// 객체에 프로퍼티 추가해주는 함수
function addKey(obj, key, value){// 객체이름, 키값, 추가하고자하는값
obj[key] = value;
}
addKey(dog, 'dog-height', 0.7);
console.log(dog);
2-7.객체에 프로퍼티 삭제해주는 함수 만들기
// 객체에 프로퍼티 삭제해주는 함수
function deleteKey(obj, key){
delete obj[key];
}
deleteKey(dog, 'dog-height');
console.log(dog);
console.log('------------------');
2-8.객체 생성하는 함수 만들기
function makeObj(name, age){
return {name, age}; // ,(콤마)를 기준으로 만들어 졌기때문에 name과 age의가 모두 키값이 된다.
}
console.log(makeObj('apple',20));
const apple = {
name : 'apple',
display: function(){
console.log(`${this.name}:🍎`);
}
}
const orange = {
name : 'orange',
display: function(){
console.log(`${this.name}:🍊`);
}
}
console.log(apple);
apple.display();
console.log(orange);
orange.display();
2-9.생성자 만들기
//생성자 만들기
function Fruit(name, emoji){
this.name = name;
this.emoji = emoji;
this.display = () => {
console.log(`${this.name}: ${this.emoji}`);
}
}
2-10.생성된 생성자를 이용하여 객체 생성하기
//생성된 생성자를 이용하여 객체 생성
const apple2 = new Fruit('apple', '🍎');
const orange2 = new Fruit('orange', '🍊');
2-11.생성된 객체를 출력
// 생성된 객체를 출력
console.log(apple2);
apple2.display();
console.log(orange2);
orange2.display();
console.log('------------------');
728x90
'개발 > JavaScript' 카테고리의 다른 글
2023.04.11 JavaScript의 이벤트, 이터레이터,스프레드,세트 (1) | 2023.04.11 |
---|---|
2023.04.10 JavaScript의 클래스심화, 상속의활용 (1) | 2023.04.10 |
2023.04.07 JavaScript의 노드, 정규표현식 (0) | 2023.04.07 |
2023.04.07 JavaScript의 객체들(로케이션,히스토리,네비게이터,DOM) (0) | 2023.04.07 |
2023.04.06 JavaScript의 객체들(Math,String,date,Web API,Form) (0) | 2023.04.06 |
댓글