我测试我发现一边看书代码。 我得到这个错误,而在JS拨弄测试它, document.write
可以为评估的一种形式。
var text = '<html><body bgcolor=linen><p>' +
'This is <b>bold<\/b>!<\/p><\/body><\/html>';
var tags = /[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;
var a, i;
while ((a = tags.exec(text))) {
for (i = 0; i < a.length; i += 1) {
document.writeln(('// [' + i + '] ' + a[i]).entityify());
}
document.writeln();
}
我得到上述的jsfiddle警告与两行document.writeln()
请注意,这只是一个警告 - 但一个好的一个应该得到尊重。 它实际上是由一个叫做检查程序生成的JSLint -和此警告的推理一个良好的阅读,请http://www.jameswiseman.com/blog/2011/03/31/jslint-messages-document-write-可待外形的-EVAL一个/ 。
基本上,这样做的基础是“ EVAL是邪恶 ” -这document.write
可用于执行评估。
除了这一点-而不是在上面提到的,避免document.write
只要有可能,除了一句简单的测试。 它被认为是后是“完成”,在这一点上修改应该只使用一种支持DOM方法进行其写入DOM。 其他详细信息有关这一在覆盖为什么文件撰写认为是“不好的做法”? -在那里提到的是“远不如使用安全和DOM友好的DOM处理方法 ”( document.createElement
, element.appendChild
等)。 这方面的一个很好的具体例子可在https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/Using_the_W3C_DOM_Level_1_Core 。
文章来源: Why am i receiving this jsfiddle error, document.write can be a form of eval