function func(name) {
console.log(name);
}
func('seok');
var func = function(name) {
console.log(name);
};
func('seok');
var func = function () {
//...
}
var func = function originalName() {
// ...
}
var func = () => {
console.log(name);
};
func('seok');
//객체 방식
var func = new Function('name', 'console.log(name)');
func('seok');
const adder = new Function('a', 'b', 'return a + b')
adder(2, 6)
함수 정의와 동시에 즉시 호출되는 함수를 즉시 실행 함수 (IIFE, Immediately Invoked Function Expression) 라고 한다. 즉시 실행 함수는 단 한 번만 호출되며 다시 호출할 수 없다.
(function(name) {
console.log(name);
})('seok');
//익명 즉시 실행함수
(function () {
var a = 3;
var b = 5;
return a * b;
})();
//기명 즉시 실행 함수
(function foo() {
var a = 3;
var b = 5;
return a * b;
})();
foo(); //ReferenceError: foo is not defined
function () {
//SyntaxError: Function statements require a function name
var myCounter = (function (initialValue = 0) {
let count = initialValue
return function () {
count++
return count
}
})(1)
myCounter() // 2
myCounter() // 3
myCounter() // 4
var myCounter = (function (initialValue = 0) {
let count = initialValue
return function () {
count++
return count
}
})(1)
myCounter() // 2
myCounter() // 3
myCounter() // 4