【发布时间】:2018-03-12 22:52:36
【问题描述】:
我正在参加有关 udemy 的课程,并且遇到了更改窗口背景的这段代码。问题是功能 randColor 失去了我。我想确切地知道发生了什么。
我知道声明了一个名为 randColor 的函数,然后该函数本身返回一个函数 + # 但我试图了解这一切发生的逻辑。添加了一个 HASH 符号,我相信它也是一个 IIFE 对吗?
非常感谢您的帮助!
document.querySelector("button").addEventListener("click", function(){
document.body.style.background = randColor();
})
function randColor(){
return '#' + (function co(lor){ return (lor +=
[0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f'][Math.floor(Math.random()*16)])
&& (lor.length == 6) ? lor : co(lor); })('');
}
【问题讨论】:
-
哇,多么可怕的代码。它是一个递归的 IIFE,而不是一个简单的循环,具有模糊的单行正文而不是两个语句,具有奇怪的基本情况条件。
-
@Bergi 代码有什么“可怕”之处?
-
@guest271314 你需要解释它的事实。它以一种难以理解的方式做了一件微不足道的事情。
-
@guest271314 - 您是否同意通过直接编码也可以达到同样的效果而不会降低效率?
-
@blex 不,这不起作用。你需要
.padStart(6, "0")(而且你不应该乘以一个字符串)
标签: javascript function iife