Javascript 回调中的变量有时为空
我有一个函数,它在回调中返回一个随机颜色,如下所示:Javascript 回调中的变量有时为空,javascript,callback,Javascript,Callback,我有一个函数,它在回调中返回一个随机颜色,如下所示: function getRandomColor(callback) { var colors = [ 'greyblue', 'lightblue', 'blue', 'lightgreen', 'darkgreen', 'purple', 'pink', 'red', 'yellow',
function getRandomColor(callback) {
var colors = [
'greyblue',
'lightblue',
'blue',
'lightgreen',
'darkgreen',
'purple',
'pink',
'red',
'yellow',
'brown'
];
var random = Math.floor(Math.random() * colors.length+1);
var color = colors[random];
return callback(color);
}
此函数在需要回调值的其他函数中调用。但是回调中的color
有时是空的。有人能解释为什么会这样吗?实际上,我使用回调来防止空值,但它看起来不是防水解决方案
function createCategory(name, access_token, callback){
getRandomColor(function(color){
countr.callApi(
{
url: 'categories',
method: 'POST'
}, {
name: name,
visible: true,
color: color
},
access_token,
function(err, category){
return callback(err, category);
}
)
})
}
由于正在使用的API需要类别上的颜色(我们想要创建),此调用将失败,因为
颜色未定义。我想知道为什么,以及如何解决 原因是随机数:
var random = Math.floor(Math.random() * colors.length+1);
它将在0
到颜色之间生成随机数。长度+1
其中颜色。长度为10
,因此它将在0-10
之间生成随机数,如果随机数为10
则颜色[随机]
将为您提供未定义的
,因为颜色
数组的索引10中没有元素。因此,
var color = colors[random]; //undefined
return callback(color); //callback has value undefined
要修复此问题,请将代码更改为
var random = Math.floor(Math.random() * colors.length);
它将仅在0-9
之间生成随机数。@NVO;-)发生了