leebom
[03] function (함수의 선언과 표현) 본문
'use strict';
//function
// 1.function 작성
// function name(param1, param2 ) { body...... return; }
// 하나의 함수는 한가지의 일만 하게 만들어야 함
// naming : doSomething, command, verb
// ex) createCardAndPoint => createCard , createPoint 로 세분화
function printHello() {
console.log('hello'); //hello
}
printHello();
function log(message) {
console.log(message);
}
log('hello11'); //hello11
log(1234); //숫자가 문자열로 변환되어서 출력 //1234
// 2. Parameters
//premitive Parametere :value가 메모리에 그대로 저장
//object Parameter :ref가 메모리에 그대로 저장
function changeName(obj) { // 아래 bom(obj)안에 이름값을 coder로 변경
obj.name = 'coder';
}
const bom = {name: 'bom'};
changeName(bom);
console.log(bom); //{name: 'coder'}
// 3. Default parameters (add in ES6)
function showMessage(message, from = 'unknown') { //from을 if문을 사용해서 작성하지 않고 상단에서 작성가능
console.log(`${message} by ${from}`);
}
showMessage('Hi'); // Hi by unknown
// 4. Rest parameters (add in ES6)
function printAll(...args) { //array 형태로 전달
//방법1
for(let i =0; i < args.length; i++){
console.log(args[i]);
}
//방법2
for(const arg of args) {
console.log(arg);
}
//방법3
args.forEach ((arg) => console.log(arg));
}
printAll('dream','coding','bom'); //dream (\n) cording (\n) bom
//5. local scope
let globalMessage = 'global';
function printMessage() {
let message = 'hello'; //블럭 안에서만 선언된 변수 -> 지역변수
console.log(message);
console.log(globalMessage);
function printAnother() { //블럭안에 또다른 블럭을 넣을수 있음
console.log(message);
let childMessage = 'hello';
}
// console.log(childMessage); 에러
}
//--> 자식은 부모에 정의된 값을 인식하나 자식안에 정의된 값은 부모 상위에서 인식할수 없음
//printMessage(message); //에러발생( 블럭 안에서만 접근이 가능)
printMessage(globalMessage); // global
// 6.Return a value.
function sum(a, b) {
return a + b;
}
const result = sum(1, 2); //3(리턴값)
console.log(`sum: ${sum(1, 2)}`); //sum: 3
// 7. callback function
function randomQuiz(answer, printYes, printNo) {
if(answer === 'aa' ) {
printYes();
}else {
printNo();
}
}
//anonymous function
const printYes = function () {
console.log('yes!!');
};
//named function
// --> 디버깅을 할때 필요해서 function에 이름을 작성,
// 하지만 함수안에 함수를 호출할때 내용이 너무 많으면 안됨.필요한 수치를 계산할때 사용
const printNo = function print() {
console.log('no!!');
// print()
};
//호출
randomQuiz('ab', printYes, printNo); //no!!
randomQuiz('aa', printYes, printNo); //yes!!
//Arrow function
//anonymous function
const simplePrint = function() {
console.log('simplePrint!!');
};
//
const simplePrint = ( ) => console.log('simplePrint!!');
const add = (a, b) => a + b;
//8. IIFE - 선언함과 동시에 호출해서 실행
(function hello() {
console.log('IIFE'); //IIFE
})();
'스터디 > 개인스터디(유투브 드림코딩 by엘리)(주5회)' 카테고리의 다른 글
[05] Object (0) | 2020.09.07 |
---|---|
[04]Class와 Object의 차이, 객체지향 언어 클래스 정리 (0) | 2020.09.06 |
[02] 연산, 반복문(operator,if, for loop...) (0) | 2020.09.03 |
[01] 테이터타입, let, hoisting (0) | 2020.09.02 |
[00] 자바스크립트 (VSC 셋팅 및 간단한 내용 정리) (0) | 2020.09.02 |
Comments