특별한 목적의 작업을 수행하도록 설계된 독립적인 블록, 필요할 때마다 호출하여 해당 작업을 반복 수행 할 수 있음
var a = fuction(){
return 'js'
}
var a = fuction(b){
b()
} // 미리 정의된 b()함수 파라미터로 전달해 호출
c(function(){
console.log('js)
}) // c()함수의 파라미터로 함수작성
var a = fuction(){
retunrn function(){
console.log('js')
} // 리턴 할 함수 작성
}
var b = a()
b() // 리턴할 함수 작성
함수 : 특정 작업을 수행하는 코드 조각
메소드 : 객체의 속성 값으로 담겨진 함수를 부르는 명칭, 클래스 및 객체와 연관되어 있는 함수
1. 함수 선언식(Function Declarations)
2. 함수 표현식(Function Expressions)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//1. 일반 함수 정의
var num1 = 3
var num2 = 5
var res1 = addNum(num1, num2)
console.log("일반함수 정의: " + res1)
// 1. 일반 함수 정의 : 호이스팅(함수를 맨 위로 끌어올림) 기술 지원
function addNum(a, b) {
return a + b
}
//2. 익명 함수 선언 참조
var res2 = addNum2(num1, num2)
console.log("익명 함수 선언 참조: " + res2)
//2. 익명 함수 선언 참조 : 호이스팅 기술 지원 X
var addNum2 = function(a, b) {
return a + b
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var num1 = Number(prompt("첫 번째 정수를 입력>> "))
var num2 = Number(prompt("두 번째 정수를 입력>> "))
function addNumber(a, b) {
console.log("더한 결과>> ", a+b);
}
addNumber(num1, num2)
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 가로 길이를 입력하세요
let width = Number(prompt("가로를 입력하세요"))
// 세로 길이를 입력하세요
let length = Number(prompt("세로를 입력하세요"))
var getRectarea = function(a, b) {
return a * b
}
var result = getRectarea(width, length)
console.log("직사각형의 면적 >> ", result)
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//기호 입력
let emoji = prompt("기호를 입력하시오")
// 몇줄 출력할지 값 입력 받기
let num = Number(prompt("몇 줄 출력할지 입력시오"))
pyramid(emoji,num)
// 함수 정의
function pyramid(a, b) {
for (var i = 1; i <= b; i++) {
for (var j = 1; j <= i; j++) {
document.write(a)
}
document.write("<br>")
}
}
</script>
</body>
</html>
1. 입력 값의 타입을 확인하지 않는다.
2. 매개변수와 입력값의 개수가 같은지 확인하지 않는다.
내부적으로 arguments객체(Array 형태)가 호출되어 인자들을 배열 형태로 저장
3. 입력값의 개수가 매개변수의 개수보다 적다면 매개변수의 값을 undefined로 설정
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//1. 입력값의 타입을 확인하지 않음
minusNum(1,"3")
function minusNum(n1, n2){
alert(n1-n2)
}
//addNum(1,2,3)
//2. 매겨변수와 입력값의 개수가 같은지 확인하지 않음
function minusNum(n1, n2){
//argumnets 객체 내의 값 출력
for(let i=0; i<arguments.length; i++){
console.log(arguments[i])
}
}
//3. 입력값의 개수가 파라미터 개수보다 적다면
// 파라미터 값을 undefined로 설정
print(1)
function print(n1, n2){
console.log(n1)
console.log(n2)
console.log(n1+n2)
}
</script>
</body>
</html>
: ES6 문법으로 함수 표현 방식으로 표현
var print = () => console.log("print")
var printNum = num => console.log(num)
var addNum = (a,b) => {
return a+b
}