【发布时间】:2016-01-22 18:14:03
【问题描述】:
为什么这段代码有效?
setTimeout("document.body.innerHTML = 'TEST'", 1000)
不应该吗?
setTimeout(function() {
document.body.innerHTML = 'TEST'
}, 1000)
setTimeout如何将字符串转换为函数?
【问题讨论】:
标签: javascript string settimeout
为什么这段代码有效?
setTimeout("document.body.innerHTML = 'TEST'", 1000)
不应该吗?
setTimeout(function() {
document.body.innerHTML = 'TEST'
}, 1000)
setTimeout如何将字符串转换为函数?
【问题讨论】:
标签: javascript string settimeout
引用 MDN 的 setTimeout documentation
替代语法中的代码是您要在延迟毫秒后执行的代码字符串(不建议使用此语法,原因与使用
eval()相同)
按照 MDN 中的建议,最好避免 setTimeout 中的字符串,因为实现可能会通过 eval 传递字符串。
这不仅仅是一个浏览器实现的东西,HTML 规范本身在this section 中这样定义它
handle = window . setTimeout( code [, timeout ] )在 timeout 毫秒后安排一个超时以编译和运行代码。
【讨论】:
基本上规范允许它采用任何一种方式,因此浏览器会采用任何一种方式。就这么简单。
不推荐,因为它在字符串上使用eval。函数方式是更好的方式。
【讨论】: