【发布时间】:2021-09-30 15:29:38
【问题描述】:
我之前认为函数表达式可以是存储在某个变量中的任何函数。比如这是函数表达式,因为函数存储在func变量中。
let func = function() {
console.log(5);
};
这里是函数表达式,因为回调函数存储在函数的参数callback中。
function func(callback) {
callback();
};
func(function() {
console.log(5);
});
//That's what I mean:
//let callback = function() {...}
但是……最近我发现这个回调函数也可以看作是函数表达式。为什么?此函数未存储在某个变量中。
let arr = [18, 50];
let obj = {
name: 'Karina',
};
arr.forEach(function func(value) {
console.log(`${this.name} is ${value} years old`);
}, obj);
那么,我的问题是......究竟是什么让函数函数表达式?
【问题讨论】:
-
为什么第三个不是一个而第二个是一个函数表达式?我真的看不出两者之间的区别。
-
为什么第二个和第三个不一样?
forEach也只是一个类似func的函数? -
函数声明总是独立的并且必须有一个名字。表达式可以是更大表达式的一部分,而不仅仅是赋值,并且不需要名称。见astexplorer.net/#/gist/ef3e38fbc933703e9cf24d05e88e34ef/…
-
你写的一切都绝对正确!
标签: javascript function expression