如何让我的匿名函数 return 一个值而不是一个函数?
How to get my anonymous function to return a value instead of a function?
我的代码:
var host_choice = function(){
var choice;
do {
choice = shuffled_list[random_choice()];
} while (choice == "car" || choice == player_choice);
return choice;
};
这里 host_choice
是我必须调用的函数。但我不确定如何使它成为包含 choice
的变量。我知道我在这里遗漏了一些基本的东西,但是该怎么做呢?
旁注:我的 shuffled_list
包含 3 个元素。我希望我的 host_choice
变量既不包含元素 car
也不包含 player_choice
是否有 "fancier" 方法来做到这一点?
你可以这样称呼它,在它后面加上 ()
:
var host_choice = function(){
var choice;
do {
choice = shuffled_list[random_choice()];
} while (choice == "car" || choice == player_choice);
return choice;
}(); // <====
请注意,这意味着它只会 运行 一次,因为您不会在任何地方保留对该函数的引用。
你也会经常在函数部分周围看到用 ()
写的:
var host_choice = (function(){
var choice;
do {
choice = shuffled_list[random_choice()];
} while (choice == "car" || choice == player_choice);
return choice;
})(); // <====
在你的情况下,这完全是风格问题,你不需要它们。 如果您没有使用 return 值,那么您将需要它们以便解析器认为 function
关键字不会启动函数声明. (这就是风格的用武之地:有些人更喜欢始终包含它们,即使它们不是绝对必要的,因为它们 有时 是必需的。)[=15 中有关该位的详细信息=].
您可以直接调用它。
var host_choice = (function(){
var choice;
do {
choice = shuffled_list[random_choice()];
} while (choice == "car" || choice == player_choice);
return choice;
})();
这是IIFE(立即调用的函数表达式)的示例。由于各种原因,它非常方便,例如 Javascript.
中的模块化
我的代码:
var host_choice = function(){
var choice;
do {
choice = shuffled_list[random_choice()];
} while (choice == "car" || choice == player_choice);
return choice;
};
这里 host_choice
是我必须调用的函数。但我不确定如何使它成为包含 choice
的变量。我知道我在这里遗漏了一些基本的东西,但是该怎么做呢?
旁注:我的 shuffled_list
包含 3 个元素。我希望我的 host_choice
变量既不包含元素 car
也不包含 player_choice
是否有 "fancier" 方法来做到这一点?
你可以这样称呼它,在它后面加上 ()
:
var host_choice = function(){
var choice;
do {
choice = shuffled_list[random_choice()];
} while (choice == "car" || choice == player_choice);
return choice;
}(); // <====
请注意,这意味着它只会 运行 一次,因为您不会在任何地方保留对该函数的引用。
你也会经常在函数部分周围看到用 ()
写的:
var host_choice = (function(){
var choice;
do {
choice = shuffled_list[random_choice()];
} while (choice == "car" || choice == player_choice);
return choice;
})(); // <====
在你的情况下,这完全是风格问题,你不需要它们。 如果您没有使用 return 值,那么您将需要它们以便解析器认为 function
关键字不会启动函数声明. (这就是风格的用武之地:有些人更喜欢始终包含它们,即使它们不是绝对必要的,因为它们 有时 是必需的。)[=15 中有关该位的详细信息=].
您可以直接调用它。
var host_choice = (function(){
var choice;
do {
choice = shuffled_list[random_choice()];
} while (choice == "car" || choice == player_choice);
return choice;
})();
这是IIFE(立即调用的函数表达式)的示例。由于各种原因,它非常方便,例如 Javascript.
中的模块化