javascript - 函数不返回任何内容(甚至没有未定义)

标签 javascript function

 var hi = function(type) {
    if (type == "boss") {
        return function(name) {
            alert("Hi chief " + name);
        };
    } else {
        return function(name) {
            alert("Hi " + name);
        };
    }
};

hi("boss"); // this will do nothing

var returnedFunction = hi();

returnedFunction("boss"); // prompt "Hi boss"

returnedFunction = hi("boss");

returnedFunction(); // prompt "Hi chief undefined"

returnedFunction("Douglas"); // prompt "Hi chief Douglas";

好吧,除了第一个之外,我几乎了解正在发生的所有事情:

hi("boss"); // this will do nothing

我希望它返回“嗨,首席未定义”。

“boss”参数是否意味着它进入 if 语句,在该语句中它应该执行参数名称未定义的函数:因此您应该得到“Hi Chief undefined”。

任何有关我如何/为什么会出现这种行为的信息都将受到欢迎。我正在尝试理解和学习 javascript 的基础知识!

亲切的问候

最佳答案

它仅返回函数,但不执行它。你必须写:

hi("boss")(); // it would print Hi chief undefined

为了执行它

你可能会这么说

hi("boss");

相当于书写

function(name) {
  alert("Hi chief " + name);
};

写作时

hi("boss")();

就像接线

function(name) {
  alert("Hi chief " + name);
}(); // notiice the ()

关于javascript - 函数不返回任何内容(甚至没有未定义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41198929/

相关文章:

javascript - Raphael 沿着路径的 SVG 动画

javascript - 如何缩进二维数组?

c++ - 使用数组作为函数输入参数

javascript - 如何只处理许多并行 promise 中最后创建的?

javascript - 警告 : Each child in a list should have a unique "key" prop. 检查元素时不显示 Key 属性

javascript - 具有自定义切片服务器的 Openlayers3

Python:替换模块类中的函数

javascript - 有人可以在 javascript 示例中解释这个 "passing arguments"吗?

javascript - var functionName = function() {} vs function functionName() {}

c++ - 将 Matrix 作为指向函数的指针传递