Javascript 如何在ES6 Arrow函数中编写这段代码
我正在尝试创建一个随机颜色生成器,有没有办法缩短此代码并将其转换为es6箭头函数?多谢各位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
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)