函数什么都不返回(甚至没有定义)

时间:2016-12-17 13:13:15

标签: 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

我希望它能够回归"嗨首席未定义"。

不是老板"参数意味着它进入if语句,它应该执行参数名称未定义的函数:因此你应该得到"嗨首席未定义"。

有关如何/为何如此获得此行为的任何信息都将受到欢迎。我正在努力理解和学习javascript的基础知识!

亲切的问候

4 个答案:

答案 0 :(得分:3)

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

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 ()

答案 1 :(得分:1)

hi("boss");这行代码将返回

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

这个功能。

现在你必须执行它。

为了执行它,只需写hi("boss")();

答案 2 :(得分:0)

为什么不呢:

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

答案 3 :(得分:-1)

`

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


//return a function not excecuted
// hi();

// x is the returned function
var x = hi("boss");
x("name");

// 2 
// hi("boss")("name"); 

`