Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 부트캠프 #개발일지 #TIL #그리드 #CSS
- JS예제
- appendChild
- 부트캠프 #스파르타코딩클럽 #개발일지# #html
- CSS
- ㅜㄹㄹ
- 특성선택자
- React
- 알고리즘
- 결합선택자
- 부트캠프 #개발일지 #TIL #FlexboxFroggy #displayflex #flexbox
- 부트캠프 #스파르타코딩클럽 #개발일지# #TIL #Javascript #confirm #location.href
- querySelector
- 의사클래스
- 개발일지
- useState
- 개발일지 #TIL #프론트엔드 #HTML
- textContent
- Til
- 부트캠프
- 템플릿스트링
- 부트캠프 #코딩 #개발일지 #프론트엔드 #CSS #TIL
- 리액트
- 깃허브오류
- 부트캠프 #개발일지 #TIL #Position #위치
- useEffect
- js
- 부트캠프 #CSS #개발일지 #TIL #박스모델
- 부트캠프 #개발일지 #TIL #CSS속성 #float #clear
- 부트캠프 #CSS #개발일지 #TIL
Archives
- Today
- Total
나의 개발일지
[Javascript] 4. 함수 - 함수선언식/함수표현식/스코프/화살표함수/arguments 본문
1. 함수 정의하기
// 1-1. 함수 선언식 : 익명함수를 만들 수 없음.
function add(x, y) { // add라는 함수 선언
return x + y;
}
console.log(add(2, 3)); // 5
function 함수명 ( ) {실행할 문장}
function 함수명 (매개변수1, 매개변수2 ... ) {실행할 문장}
// 1-2. 함수 표현식 : 익명함수를 어떤 변수에 할당하는 건 함수를 선언한다고 하지 않고, 함수를 표현한다고 한다.
let add = function(x, y) { // add 라는 변수에 함수 할당, 익명 함수(이름이 없는) 생성 가능
return x + y; // 익명함수를 선언함과 동시에 add라는 변수에 할당
}
console.log(add(2, 3)); // 5
// --> 함수 표현식은 hoisting이 되지 않는다. **
let 변수명 = function ( ) {실행할 문장}
let 변수명 = function ( 매개변수1, 매개변수2 ... ) {실행할 문장}
2. 함수 호출하기
function add(x, y) {
return x + y;
}
console.log(add(2, 3)); // 5
// --> add 라는 함수를 호출하여 결과값을 반환한다. 함수를 호출할 때는 함수 이름뒤에 괄호로 사용
3. 함수 매개변수와 반환값
// 3-1. 함수 매개변수
function add(x, y) {
return x + y;
}
console.log(add(2, 3)); // 5
// --> add라는 함수가 x와 y라는 두 개의 매개변수를 받아들이고, 함수를 호출할 때는 매개 변수에 값을 전달한다.
// 3-2. 함수 반환값
function add(x, y) {
return x + y;
}
let result = add(2, 3);
console.log(result); // 5
// --> add라는 함수가 x와 y라는 두 개의 매개변수를 받아들이고, 이를 더한 값을 반환한다.
// 함수를 호출한 결과값에 변수를 할당하여 사용할 수 있다
4. 스코프
함수가 실행될 때, 함수 내에서 변수에 접근할 수 있는 범위를 뜻한다.
자바스크립트에서는 2가지의 스코프 타입이 있다
1. 전역스코프 global scope : 전역에 선언되어있어서 어느 곳에서든지 해당 변수에 접근할 수 있다.
2. 지역 스코프 local scope : 해당 지역에서만 접근할 수 있어서 지역을 벗어난 곳에선 접근이 불가하다.
// 4-1. 함수스코프(var)
// 자바스크립트는 기본적으로 함수 스코프를 따른다
// --> 새로운 함수가 생성될 때마다 새로운 스코프 생성,
// 함수 몸체에 선언한 변수는 해당 함수 몸체 안에서만 접근 가능
function main() {
var x = 'hi';
}
console.log(x);
main(); // 출력이 안된다
// 에러 해결
function main() {
var x = 'hi';
console.log(x);
}
main(); // hi 가 출력된다! 함수 몸체에 선언했기 때문에 해당 몸체 안에서 접근 가능!
// if 문
function main() {
if (true) {
var x = 'hi';
console.log(x);
}
}
main(); // --> hi 출력
function main() {
if (true) {
var x = 'hi';
}
console.log(x);
}
main(); // --> hi 출력
// --> if 블럭 안이든 밖이든 var 키워드를 사용해서 선언된 변수는 자동으로 함수스코프를
가지고 있기 때문에 가능
//-------------------------------------------------------------------------------------
// 4-2. 블록 스코프(let, const)
function main() {
if (true) {
let x = 'hi';
}
console.log(x);
}
main(); // 에러가 남.
// 에러 해결
function main() {
if (true) {
let x = 'hi';
console.log(x);
}
}
main(); // --> hi 출력, var 키워드를 사용해서 선언된 변수는 더 이상 함수스코프가 아니라
블록스코프이기 때문이다. 변수가 선언된 블록(if 블록) 내부에서만 가능
function main() {
let x = 'hello';
if (true) {
let x = 'hi';
}
console.log(x);
}
main(); // --> hello 출력, hi는 if문 안에서만 유효하기 때문
function main() {
let x = 'hello';
if (true) {
let x = 'hi';
console.log(x);
}
}
main(); // --> hi 출력
//-------------------------------------------------------------------------------------
// 4-3 전역 범위(global scope)
// window는 전역 개체!
var aVAr = 'varHello';
let aLet = 'letHello';
console.log(window);
// --> 콘솔 창에 window 객체에 등록이 되고 "varHello" 가 찍힌다
// --> let은 등록안됨
참고한 유튜브 :
https://www.youtube.com/watch?v=_zMVlKxmWHg
5. 화살표 함수(기본 - 문법의 간결함!)
( ) => { }
// 화살표 함수로 바꾸기
// 1. function 을 지우고
// 2. () {} 사이에 화살표 => 넣기
const main = function() {
console.log("hello")
}
main();
const main = () => {
console.log("hello")
}
main();
//--------------------------------------
function add(a, b) {
return a + b;
}
add();
const add = (a, b) => a + b // 한 줄 일 때, return과 중괄호{} 지우기 가능
add();
//--------------------------------------
const main = () => {
console.log("hello")
}
const main = () => console.log("hello") // 한 줄 일 때, 중괄호 지우기 가능
//--------------------------------------
function print(text) {
console.log(text)
}
print("hi")
const print = (text) => console.log(text) // 한 줄이니까 중괄호 생략
print("hi")
const print = text => console.log("text") // 매개변수가 하나일 때, 소괄호 생략 가능
// 매개변수가 없을 때, () 일 때에는 생략 불가능
print("hi")
//--------------------------------------
//객체인 경우
const getObject = () => {
return {name: "박희원"}
}
console.log(getObject());
const getObject = () => ({name: "박희원"})
console.log(getObject());
// {}와 return 생략가능, 하지만 {name: "박희원"} 만 남으면 헷갈리기 때
// 바깥에 ()로 감싸준다
6. arguments와 가변인자
function main () {
console.log(arguments) //일반함수의 경우, 매개변수를 따로 명시하지 않아도
} // arguments라는 변수를 암묵적으로 전달받는다
main(1, 2, 3); // [Arguments] { '0': 1, '1': 2, '2': 3 }
// 배열은 아니지만, 배열 형태로 접근할 수 있다
function main () {
console.log(arguments[1])
}
main(1, 2, 3); // 2가 출력됨.
// 화살표 함수로 바꾸기
const main = () => {
console.log(arguments)
}
main(1, 2, 3); // 에러가 남.
// 에러 해결
// 화살표 함수도 가변인자 처리 가능!**
const main = (...args) => { // 매개변수로 아무거나, 앞에 ...(나머지 매개변수 구문)
console.log(args)
}
main(1, 2, 3); // [ 1, 2, 3 ] 배열로 출력
const main = (...args) => {
console.log(args[2])
}
main(1, 2, 3); // 3 출력
참고한 유튜브 :
https://www.youtube.com/watch?v=mfaQOlc73pU
빡대가리인줄만 알았던 나를 ,,
이 강의가 구원해주었습니다 ,,,
감사합니다 ,, 이해가 쏘옥쏘옥 ,, ><
'JavaScript > Sparta' 카테고리의 다른 글
[Javascript] 6. 함수 - for문 / for 중첩 (1) | 2023.10.18 |
---|---|
[Javascript] 5. 함수 - 조건문 / if / else if / else / if중첩문 / switch (0) | 2023.10.17 |
[Javascript] 3. 연산자 (0) | 2023.10.15 |
[Javascript] 2. 데이터 타입 (0) | 2023.10.14 |
[Javascript] 1. 변수와 상수 (0) | 2023.10.13 |