javascript函数返回函数
问题描述:
我有一个数组this.colors = [RED, BLUE, GREEN]
,有时我想从这个数组中选择一个随机颜色。 当我通过这样做,结果是正常的:javascript函数返回函数
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)];
// => }
函数有什么问题?
答
拨打pick_random_color
后不需要括号吗?
color = this.pick_random_color();
你似乎什么做的是分配color
到pick_random_color
功能,不执行它。
答
你忘记了parens。你必须添加()到this.pick_random_colors
答
这是因为this.pick_random_color
是一个函数的引用。您应该通过编写this.pick_random_color()
来执行此功能。
但要确保this
关键字是指原始对象
我敢肯定你的'this'被混淆代码的使用,这是完全没有必要的。 DaveShaw是100%正确的,在这种情况下,你正在为'color'分配一个空变量。 – Alex