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的基础知识!
亲切的问候
答案 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");
`