函数在javascript中返回函数

时间:2011-11-27 20:49:05

标签: javascript

我有一个数组this.colors = [RED, BLUE, GREEN],有时候我想从这个数组中选择一种随机颜色。 当我这样做时,结果是正常的:

rand_color = this.colors[Math.floor(Math.random() * this.colors.length)]
javascript: console.log(rand_color)
// => rgb(211, 65,  65)

但是当我把它包装在函数中时:

this.pick_random_color = function() {
    return this.colors[Math.floor(Math.random() * this.colors.length)];
}

该函数不返回随机值。相反,我在日志中收到此消息:

color = this.pick_random_color;
javascript: console.log(color); 
// => this.pick_random_color = function() {
// =>   return this.colors[Math.floor(Math.random() * this.colors.length)];
// => }

这个功能出了什么问题?

3 个答案:

答案 0 :(得分:7)

拨打pick_random_color后,您不需要括号吗?

color = this.pick_random_color();

您似乎正在做的是 color分配给pick_random_color函数,而不是执行它。

答案 1 :(得分:2)

你忘记了parens。你必须添加()到this.pick_random_colors

答案 2 :(得分:2)

这是因为this.pick_random_color是对函数的引用。您应该通过编写this.pick_random_color()来执行此功能。

但请确保this关键字引用原始对象