【前辈,请教个问题】在什么情况下,传入的参数会是一个字符串?所以这里的写法意义何在呀?
Closed this issue · 6 comments
AsherSun commented
AsherSun commented
AsherSun commented
前辈,在问问题之前我已经查阅过 Function 构造函数的文档了。但是 这段代码的上下文语义 cb
回调函数是js
中定时器的参数。于是我在浏览器控制台中写入
setTimeout('console.log(1)', 1000);
控制台抛错,由此证明js
的定时器的参数并不支持字符串声明的函数
代码上下文
Lines 212 to 231 in 12b2e4d
qifeng0748 commented
@AsherSun 看你截图是在 github 页面中打开的控制台,然后报错。
要学会看报错内容说的是什么意思,再下结论。
那么我们首先看看你截图里的报错是什么意思。
Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src github.githubassets.com".
这里有一个关键的词 unsafe-eval 这是CSP 策略指令中的知识。
上面的报错意思就是,因为未使用 unsafe-eval
关键字授权所以不能使用 eval()
方法,
setTimeout()
第一个参数如果是字符串,那么解析方式和 eval()
一样,结合上面的CSP策略解释,所以你在控制台执行就会报错。
你在其他页面或者自己写个 HTML 再试试?
下面附上 github 的响应中 CSP 的设置。
AsherSun commented
@qifeng0748 谢谢前辈解惑
xiaojue commented
学好英语很重要呀。