javascript - 第一类使用的这两个函数有什么区别? (javascript)

标签 javascript function variables first-class-functions

有两个函数,一个使用第一类并将函数分配给变量然后返回该变量,另一个只是一个常规的简单函数。在那里,我不明白为什么一个比另一个更好,因为它们看起来和做的事情对我来说都是完全相同的。有人可以帮助我让我更容易理解其中的区别吗?

头等舱

function createDrinkOrder1(passenger) {
    var orderFunction;
    if (passenger.ticket === "firstclass") {
        orderFunction = function() {
            console.log("Would you like a cocktail or wine?");
        };
    } else {
        orderFunction = function() {
            console.log("Your choice is cola or water.");
        };
    }
    return orderFunction;
}

简单的功能

function createDrinkOrder2(passenger){
    if(passenger.ticket === "firstclass"){
        console.log("Would you like a cocktail or wine?");
    }else{
        console.log("Your choice is cola or water.");
    }   
}

最佳答案

createDrinkOrder1 返回一个您可以稍后调用的函数:

var orderFunction = createDrinkOrder1(passenger);
// nothing printed to console yet

// later:
orderFunction();
// now printed to console

createDrinkOrder2 立即打印结果:

createDrinkOrder1(passenger);
// printed to console

有时,您返回一个函数不仅是为了以后能够调用它,而且还可以创建一个闭包,这可能是一个值得阅读的有趣主题。

关于javascript - 第一类使用的这两个函数有什么区别? (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35074183/

相关文章:

javascript - Symfony 3 从用户那里获取时区,而无需以表单询问他们

c - 通过引用传递数组的两种不同方式。哪一个更正确?

javascript - 无法使用括号中的变量从 JavaScript 数组获取值

java - Android编程使用旧变量定义新变量?

javascript - 用于滚动/滑动的最佳 Javascript 库 (iPhone/iPad)

javascript - 将 Float32Array 转换为 16 位 float 组缓冲区 JavaScript

javascript - react |虚拟 DOM 模态未显示

mysql - 将 MySQL 查询存储为函数

objective-c - 在 Objective-C 中进行函数提取以创建干净的代码有哪些好的策略?

javascript - 更改可变文本颜色