Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ES6 Arrow函数中编写这段代码_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript 如何在ES6 Arrow函数中编写这段代码

Javascript 如何在ES6 Arrow函数中编写这段代码,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我正在尝试创建一个随机颜色生成器,有没有办法缩短此代码并将其转换为es6箭头函数?多谢各位 let html = ""; let rgbColor; function randomColors(red, green, blue) { for (let i = 1; i <= 10; i++) { red = Math.floor(Math.random() * 256); green = Math.floor(Math.random() * 256); blu

我正在尝试创建一个随机颜色生成器,有没有办法缩短此代码并将其转换为es6箭头函数?多谢各位

let html = "";
let rgbColor;

function randomColors(red, green, blue) {
  for (let i = 1; i <= 10; i++) {
    red = Math.floor(Math.random() * 256);
    green = Math.floor(Math.random() * 256);
    blue = Math.floor(Math.random() * 256);
    rgbColor = `rgb(${red},${green},${blue})`;
    html += `<div style="background-color:${rgbColor}"></div>`;
  }

 document.write(html);
}

randomColors()
let html=”“;
让RGB颜色;
函数随机颜色(红色、绿色、蓝色){

对于(设i=1;i你可以这样做:

let html = "";
let rgbColor;

let randomColors = (red, green, blue) => {
  for (let i = 1; i <= 10; i++) {
    red = Math.floor(Math.random() * 256);
    green = Math.floor(Math.random() * 256);
    blue = Math.floor(Math.random() * 256);
    rgbColor = `rgb(${red},${green},${blue})`;
    html += `<div style="background-color:${rgbColor}"></div>`;
  }
  document.write(html);
}

randomColors()
let html=”“;
让RGB颜色;
让随机颜色=(红、绿、蓝)=>{

for(设i=1;iES6 arrow函数用于替换标准匿名函数,而无需创建函数通常创建的新作用域。因此,您的函数将保留其名称,而不是arrow函数。

您可以使用和生成每种颜色以及颜色列表,并将所有内容合并为一个字符串:

const randomColor=(计数)=>
Array.from({length:count},(\uk)=>//创建一个长度为count的div数组
`${k}`//在每个div中创建一个包含3种颜色的数组,并将它们连接起来
).join(“”);//将div数组连接到一个字符串
document.write(randomColors(9));
是准确的,因为它是使用箭头函数的
randomColors
函数的有效表示形式,它本身并不能缩短代码。为此,我建议拿出一个辅助函数来生成随机颜色(请参见下面的
getRandColor
函数)

let html=”“;
让RGB颜色;
常量随机颜色=(红、绿、蓝)=>{
const getRandColor=()=>Math.floor(Math.random()*256);

for(让i=1;i更短并不总是最好的。这相当短,但可能有点不透明:

let html = ""

const randomColors=()=>(
    ((rnd)=>(`<div style="background-color: rgb(${rnd()},${rnd()},${rnd()})"></div>`))
    (()=>Math.floor(Math.random()*256))
)

html+=randomColors()
document.write(html)
let html=“”
常量随机颜色=()=>(
((rnd)=>(``'))
(()=>Math.floor(Math.random()*256))
)
html+=随机颜色()
document.write(html)

不,箭头函数始终是匿名的。当您处于全局范围或用于方法时,通常建议只使用
函数
。在这种情况下使用它没有多大好处。您可以做的一件事是将
Math.floor(Math.random()*256)分开
转换成一个函数并调用它。除此之外,这里没有什么可以缩短的。不,箭头函数不会缩短此代码。当您不需要简明的正文或词法时,没有理由使用它。
。使用箭头函数的最佳方案是什么,因为我对JS还是个新手,我真的很难理解它我的最后一句话是因为我漏掉了一个单词,我的意思是通常不推荐使用。我怎样才能将随机数生成器放在一个函数中,而不是重复代码3次?@HarmanPannu我发布了一个替代解决方案。它需要抽象出
Math.floor(Math.random()*256)的逻辑
转换为一个单独的函数。我喜欢这个解决方案,但对于像我这样的初学者来说太复杂了:)@HarmanPannu-实际上它非常简单。我没有单独生成每种颜色,而是创建了一个3种颜色的数组(使用数组#from)并使用join将它们组合成字符串。我已将表达式放在div的模板字符串中。外部数组也执行相同的操作,但与divs数组相同。您应该阅读答案中的链接。我现在明白了,乍一看它看起来非常复杂,但我尝试自己重新编写它,现在它对我来说很有意义:)感谢Ryan的帮助:)
let html = ""

const randomColors=()=>(
    ((rnd)=>(`<div style="background-color: rgb(${rnd()},${rnd()},${rnd()})"></div>`))
    (()=>Math.floor(Math.random()*256))
)

html+=randomColors()
document.write(html)