在Javascript中,在函数语句上使用函数表达式有什么意义?

在Javascript中,在函数语句上使用函数表达式有什么意义?,javascript,function,Javascript,Function,我知道表达式只有在执行上下文到达它时才会存在。我只是想知道,在什么地方使用函数表达式会比使用普通函数语句更好,而不必担心函数何时会保存到内存中 我完全了解它们的不同之处,我只是好奇它们的表达方式 函数表达式在以下几种情况下很有用: 将函数指定给属性时: 根据情况创建可能包含不同实现的变量时: 在立即调用的IIFE函数表达式中: 关于IIFE的有用性,还有许多其他参考文献: 用于将函数作为参数传递的内联函数表达式: 一个这样的应用程序可能是在定义回调函数时,在执行回调后,您不需要引用回调函数。例如

我知道表达式只有在执行上下文到达它时才会存在。我只是想知道,在什么地方使用函数表达式会比使用普通函数语句更好,而不必担心函数何时会保存到内存中


我完全了解它们的不同之处,我只是好奇它们的表达方式

函数表达式在以下几种情况下很有用:

将函数指定给属性时:

根据情况创建可能包含不同实现的变量时:

在立即调用的IIFE函数表达式中:

关于IIFE的有用性,还有许多其他参考文献:

用于将函数作为参数传递的内联函数表达式:


一个这样的应用程序可能是在定义回调函数时,在执行回调后,您不需要引用回调函数。例如,如果您使用一个数组方法,例如map或reduce,并使用一个非常简单的回调函数,那么您可能不需要使用声明

var incrementValues = [1, 2, 3, 4, 5].map(function(val) {return val+1});

///==>incrementValues=[2,3,4,5,6]

另一个类似的问题,它也有一个很好的答案:例如,当它们是必不可少的,比如箭头函数时,函数表达式在一个地方需要函数时很有用,所以不需要命名。不必担心函数何时会保存到内存中。-您几乎不必担心这一点。您忘记了最常见的情况:将回调作为参数传递时。@Bergi-添加了它。@Ender-我只是好奇,为什么您不接受这个答案?它缺少什么?@jfriend00内联的所有内容都是一个表达式。
var sortFn;

if (high > low) {
    sortFn = function(...) {
        // sort increasing order
    }
} else {
    sortFn = function(...) {
        // sort decreasing order
    }
}

// some code that uses sortFn()
var getUniqueID = (function() {
   var counter = 0;
   return function() {
       return counter++;
   }
})();

console.log(getUniqueID());   // 0
console.log(getUniqueID());   // 1
console.log(getUniqueID());   // 2
fetch(someURL).then(function(value) {
    // this is inside a function expression
}).catch(function(err) {
    // handle errors here
});

myArray.forEach(function(item, index) {
    // process each item of the array here
    // in this function expression
});
var incrementValues = [1, 2, 3, 4, 5].map(function(val) {return val+1});