일급함수

까만호랭·2023년 8월 4일
0

📌일급함수의 정의 및 조건

프로그래밍 언어에서 변수들처럼 다룰 수 있는 함수

  1. 함수객체를 변수에 치환 가능
    (함수의 이름으로 함수를 변수에 치환가능)
  2. 인수로 함수 가능
  3. 매개변수로 함수 가능
  4. 함수의 반환값으로 함수 가능

일급함수 공부하기

function f1() {
		document.write("<br/>밥은 먹었니?");
	}
	
	function f2(func) {  // 매개변수로 함수객체를 전달 받음
		func();  // f1 함수 호출
	}
	
	function f3(f) {
		//return f(); // (f)를 실행하고 빠져나오기
		return f; // 반환값이 함수 객체
	}
	
	//let hello = function hi() {  // 함수를 변수에 치환하는 것도 가능
	let hello = function() { // 위와 같음 : 이름이 없는 함수는 anaonymous함수
		f2(f1); // f1 함수의 (객체)주소가 인수가 되는 것. ,,, f2(f1())과는 다름 
		//f2(f1());  // f1함수의 실행 결과가 인수가 되는 것
		document.write("<br/>^^^;");
		re = f3(f1); // 주소가 리턴되서 
		re();        // 주소를 받아 찍음
		
		f3(f1)();  // f1 함수객체를 받은 후 실행,, () : '실행하라' 라는 뜻
	}
  1. function f2(func)의 func와 function f3(f)의 f는 매개변수이다.
  2. f2(f1); 출력되면 f2함수에 f1 함수가 f2함수의 인자값으로 들어가게 되어 f1함수가 출력됨!!
  3. re=f3(f1)이 출력되면 f1의 함수가 그대로 f3의 함수에 매개변수로 들어가게 되고 그 결과값이 re에 들어가게 됨
  4. f3(f1)();가 출력되면 f1함수의 결과가 f3함수 매개변수로 들어가서 출력됨

JS의 지역변수와 전역변수

let a1 = 10;    // 전역변수
	const b1 = 20;  
	
	function func1() {
		let c1 = 30;  // 지역변수
		const d1 = 40;
		
		document.write("<br/>a1:", a1, ", b1:", b1);
		document.write("<br/>c1:", c1, ", d1:", d1);
		function func2() {  // 함수안에다 함수를 선언함
			let e1=50;
			document.write("<br/>e1:", e1);                 // e1은 func2의 멤버
			document.write("<br/>a1:", a1, ", b1:", b1);    // 얘네는 전역
			document.write("<br/>c1:", c1, ", d1:", d1);    // 얘들은 fucn1의 멤버
		}
		func2();
		/// document.write("<br/>e1:", e1);   // 에러남 : eq은 func2의 멤버이기 때문에 func2 안에서만 해야함,, 얘는 바깥에서 실행해서 오류
	}
	func1();
	
	document.write("<br/>func1 밖에서 a1:", a1, ", b1:", b1);
  • 지역변수는 함수 안에서만 해야함
  • 함수 내에서는 함수 밖의 멤버 참조 가능
    함수 내에서는 함수 밖의 멤버 참조 가능
    위의 출력 결과...
profile
남들과 함께 발자국을 남기는 까만호랭

0개의 댓글