添加匿名函数 return 到数组推送
Add anonymous function return to array push
如何将匿名函数的值 return 压入数组。我试过这段代码,但它不起作用。我哪里错了
for (var i = 0; i < num; i++) {
//get ramdom color
// arr.push(randomColor());
arr.push(function() {
//pick a "red" from 0 - 255
var r = Math.floor(Math.random() * 256);
//green 0 - 255
var g = Math.floor(Math.random() * 256);
//blue 0 -255
var b = Math.floor(Math.random() * 256);
return "rgb" + "(" + r + ", " + g + ", " + b + ")";
});
}
您可以这样做:
for (var i = 0; i < num; i++) {
//get ramdom color
// arr.push(randomColor());
arr.push(function() {
//pick a "red" from 0 - 255
var r = Math.floor(Math.random() * 256);
//green 0 - 255
var g = Math.floor(Math.random() * 256);
//blue 0 -255
var b = Math.floor(Math.random() * 256);
return "rgb" + "(" + r + ", " + g + ", " + b + ")";
}()); // Note the two brackets.
}
注意倒数第二行的两个括号。它们旨在立即执行该功能。
不过要小心这种模式。很容易将 reader 与此类代码混淆。您可以使用诸如:
function getRandomColor() {
//pick a "red" from 0 - 255
var r = Math.floor(Math.random() * 256);
//green 0 - 255
var g = Math.floor(Math.random() * 256);
//blue 0 -255
var b = Math.floor(Math.random() * 256);
return "rgb" + "(" + r + ", " + g + ", " + b + ")";
}
for (var i = 0; i < num; i++) {
//get ramdom color
// arr.push(randomColor());
arr.push(getRandomColor());
}
您没有在循环中调用这些函数。
let arr = [];
let num = 3;
for (let i = 0; i < num; i++) {
arr.push((() => {
let r = Math.floor(Math.random() * 256);
let g = Math.floor(Math.random() * 256);
let b = Math.floor(Math.random() * 256);
return "rgb" + "(" + r + ", " + g + ", " + b + ")";
})());
}
console.log(arr);
无需复杂化:
for (var i = 0; i < num; i++) {
//get ramdom color
//pick a "red" from 0 - 255
var r = Math.floor(Math.random() * 256);
//green 0 - 255
var g = Math.floor(Math.random() * 256);
//blue 0 -255
var b = Math.floor(Math.random() * 256);
var colour = "rgb" + "(" + r + ", " + g + ", " + b + ")";
arr.push(colour)
}
如何将匿名函数的值 return 压入数组。我试过这段代码,但它不起作用。我哪里错了
for (var i = 0; i < num; i++) {
//get ramdom color
// arr.push(randomColor());
arr.push(function() {
//pick a "red" from 0 - 255
var r = Math.floor(Math.random() * 256);
//green 0 - 255
var g = Math.floor(Math.random() * 256);
//blue 0 -255
var b = Math.floor(Math.random() * 256);
return "rgb" + "(" + r + ", " + g + ", " + b + ")";
});
}
您可以这样做:
for (var i = 0; i < num; i++) {
//get ramdom color
// arr.push(randomColor());
arr.push(function() {
//pick a "red" from 0 - 255
var r = Math.floor(Math.random() * 256);
//green 0 - 255
var g = Math.floor(Math.random() * 256);
//blue 0 -255
var b = Math.floor(Math.random() * 256);
return "rgb" + "(" + r + ", " + g + ", " + b + ")";
}()); // Note the two brackets.
}
注意倒数第二行的两个括号。它们旨在立即执行该功能。
不过要小心这种模式。很容易将 reader 与此类代码混淆。您可以使用诸如:
function getRandomColor() {
//pick a "red" from 0 - 255
var r = Math.floor(Math.random() * 256);
//green 0 - 255
var g = Math.floor(Math.random() * 256);
//blue 0 -255
var b = Math.floor(Math.random() * 256);
return "rgb" + "(" + r + ", " + g + ", " + b + ")";
}
for (var i = 0; i < num; i++) {
//get ramdom color
// arr.push(randomColor());
arr.push(getRandomColor());
}
您没有在循环中调用这些函数。
let arr = [];
let num = 3;
for (let i = 0; i < num; i++) {
arr.push((() => {
let r = Math.floor(Math.random() * 256);
let g = Math.floor(Math.random() * 256);
let b = Math.floor(Math.random() * 256);
return "rgb" + "(" + r + ", " + g + ", " + b + ")";
})());
}
console.log(arr);
无需复杂化:
for (var i = 0; i < num; i++) {
//get ramdom color
//pick a "red" from 0 - 255
var r = Math.floor(Math.random() * 256);
//green 0 - 255
var g = Math.floor(Math.random() * 256);
//blue 0 -255
var b = Math.floor(Math.random() * 256);
var colour = "rgb" + "(" + r + ", " + g + ", " + b + ")";
arr.push(colour)
}