我的代码:
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
是否有#34;发烧友"这样做的方式?
答案 0 :(得分:2)
您可以直接调用它。
var host_choice = (function(){
var choice;
do {
choice = shuffled_list[random_choice()];
} while (choice == "car" || choice == player_choice);
return choice;
})();
这是IIFE(立即调用函数表达式)的示例。它由于各种原因非常方便,例如Javascript中的模块化。
答案 1 :(得分:1)
你打电话给它,()
之后:
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;
})(); // <====
在你的情况下,这完全是一种风格问题,你不需要它们。 如果您没有使用返回值,则需要它们,因此解析器不认为function
关键字正在启动函数声明。 (这就是风格的来源:有些人宁愿总是包括它们,即使它们不是绝对必要的,因为它们是必要的有时。)my answer here中有关该位的详细信息。